0

我正在控制器中进行查询,但我注意到我应该在模型中进行查询。

这是我在控制器中的代码

    $this->db->where('page', 'your-secret-skill');
    $this->data['articles'] = $this->article_m->get();

这是我在核心模型中的get方法:

    public function get($id = NULL, $single = FALSE){

    if ($id != NULL) {
        $filter = $this->_primary_filter;
        $id = $filter($id);
        $this->db->where($this->_primary_key, $id);
        $method = 'row';
    }
    elseif($single == TRUE) {
        $method = 'row';
    }
    else {
        $method = 'result';
    }

    if (!count($this->db->ar_orderby)) {
        $this->db->order_by($this->_order_by);
    }
    return $this->db->get($this->_table_name)->$method();
}

我将如何解决这个问题并在文章模型中进行查询并使用控制器加载它?

4

2 回答 2

1

您应该使用 Articles 模型继承 CI_Model,并且可以在其中将查询编写为:

class Articles_m extends CI_Model
{
    function __construct()
    {
          parent::__construct();
          $this->table_name = 'articles';
     }


    public function get()
    {
     $this->db->where('page', 'your-secret-skill');
     $query = $this->db->get($this->table_name);
     return $query->result();
    }

}

然后在你的控制器中:

$this->data['articles'] = $this->article_m->get();
于 2013-09-25T14:02:02.403 回答
0

首先从控制器中删除此行:

$this->db->where('page', 'your-secret-skill');

而是your-secret-skill作为参数发送到您的模型函数:

$where = array( 'page', 'your-secret-skill' );
$this->data['articles'] = $this->article_m->get('','',$where);

在您的模型中:

public function get($id = NULL, $single = FALSE, $where = array){
    if(isset($where) && is_array($where)){
        $this->db->where($where);
    }
}
于 2013-09-25T14:03:23.890 回答