Codeigniter SQL多用途查询

时间:2012-06-15 20:52:56

标签: sql codeigniter

目前我正在使用以下代码从数据库调用标题它工作正常但我想在我的管理区域中为主要选项实现查看所有区域(从options表中拉出其他行)对于我的网站。

最好的方法是什么?为标题创建另一个函数?因为我不想只为标题运行一个foreach循环。

function systemOptions()
{   

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

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

        $row['cms_name'];
    }

    return $row;
}

2 个答案:

答案 0 :(得分: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;

}

答案 1 :(得分:0)

我认为你应该更好地返回模型中的所有结果,并在需要对象的任何地方提取它,如Colin所说:

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;