0

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

最好的方法是什么?只为标题创建另一个函数?因为我不想只为标题运行一个 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

我认为您最好返回模型中的所有结果并将其提取到您需要对象的任何地方,如 Colin 所说:

function systemOptions()
{   

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

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

    return $row;
}

如果你想在控制器的 index 方法中使用它:

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 回答