0

options現在、以下のコードを使用してデータベースからタイトルを呼び出していますが、正常に機能しますが、Webサイトのメインオプションとして、管理領域にすべての領域の表示(テーブルから他の行を取得)を実装したいと考えています。

これを行うための最良の方法は何でしょうか?タイトルだけのために別の関数を作成しますか?タイトルのためだけにforeachループを実行したくないので。

function systemOptions()
{   

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

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

        $row['cms_name'];
    }

    return $row;
}
4

2 に答える 2

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;

}
于 2012-06-21T20:14:09.973 に答える
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;
于 2012-06-16T07:43:40.997 に答える