2012-06-15 49 views
0

目前我使用下面的代碼,它工作正常,但我想在我的管理方面來實現視圖中的所有區域(從options表拉動其它行)爲主要選項調用從數據庫中標題爲我的網站。笨SQL多用途查詢

這樣做的最好方法是什麼?爲標題創建另一個函數?因爲我不想爲標題運行一個foreach循環。

function systemOptions() 
{ 

    $query = $this->db->get('options'); 

    if($query->num_rows() > 0) 
    { 
     $row = $query->row_array(); 

     $row['cms_name']; 
    } 

    return $row; 
} 
+0

爲什麼不直接返回所有結果並在需要時從結果對象中提取所需的結果? –

+0

@Colin我該怎麼做?我知道它很容易,但我很困惑 –

回答

1

我會做這樣的事;

<?php 

/* 

CREATE TABLE `options` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `name` varchar(64) DEFAULT NULL, 
    `value` text, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `name` (`name`) 
); 

INSERT INTO `options` (`id`, `name`, `value`) 
VALUES 
(1, 'generic_keywords', 'This,is,my,generic.keywords'), 
(2, 'generic_description', 'This is a brief site summary'), 
(3, 'page_status_active', '1'), 
(4, 'page_status_draft', '2'), 
(5, 'page_status_invisible', '2'), 
(6, 'page_status_archived', '4'), 
(7, 'listing_length', '20'), 
(8, 'page_status_deleted', '9'); 

*/ 



function systemOptions() { 

    $options = FALSE; 
    $query = $this->db->get('options'); 

    if($query->num_rows() > 0) { 
     foreach($query->result() as $row) { 
      $data = new StdClass; 
      $data->{$row->name} = $value; 
      $options[] = $data; 
     } 
    } 

    return $options; 
} 

function systemOption($name) { 

    $query = $this->db->get_where('options', array('name' => $name), 1); 
    return ($query->num_rows() == 1) ? $query->row() : FALSE; 

} 
0

我想你應該更好的回報模型中的所有結果,並不管你需要一個對象作爲柯林說解壓:

function systemOptions() 
{ 

    $query = $this->db->get('options'); 

    if($query->num_rows() > 0) 
    { 
     $row = $query->result(); 
    } 

    return $row; 
} 

,如果你想在控制器使用它的索引方法:

public function index() 
{ 
    $data[row] = $this->example_model->systemOptions(); 
    $this->load->view('example_view', $data); 
} 

何地您需要的對象視圖文件中使用下面的代碼:

echo $row->cms_name; 
echo $row->title; 
+0

謝謝,但我得到的消息:使用echo'$按行> CMS_NAME試圖正如我所說的,以獲得非對象 –

+0

的財產;'和'回聲按行>稱號;'意味着你可以回顯數據庫中的任何列。如果你的數據庫中有cms_name,那麼檢索'$ row-> cms_name;'不會讓你陷入麻煩。你在迴應什麼?這是在你的數據庫?!請分享導致錯誤的代碼行。 – Afshin

+0

,當然,不要忘記在加載視圖時包含$數據。 '$這 - >負載>視圖( 'example_view',$數據);' – Afshin