Zab*_*abs 3 activerecord model codeigniter
我已经集成了Jamie Rumbelow My Model,用于使用github中的codeigniter进行活动记录查询 - https://github.com/jamierumbelow/codeigniter-base-model
我想使用普通的codeigniter语法来执行具有多个参数的位置但不确定如何使用标准codeigniter语法,如下所示:
$this->db->where('active', 1);
$this->db->where('type', 'news');
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议如何使用此MY_Model完成此操作?
例如......这有效,但只允许一列及其值 - 如何使用多列和值进行此操作
$this->news_model->get_many_by('active', 1);
Run Code Online (Sandbox Code Playgroud)
Jam*_*low 13
MY_Model的get_方法接受与CodeIgniter的查询构建器(以前的Active Record)相同的参数where.这意味着您可以通过一个数组:
$this->news_model->get_many_by(array( 'key' => 'value', 'other_key' => 'value' ));
Run Code Online (Sandbox Code Playgroud)
如果你正在做比这更复杂的事情,你也可以创建自己的范围方法.范围方法是在MY_Model中进行查找的正确方法.
范围方法为查找提供了上下文和可读性.在您的示例中,您正在查找活动的新闻文章,因此我们可以在我们的模型上为这些确切的文章创建范围界定方法:
class News_model extends MY_Model
{
public function active_news()
{
$this->db->where('active', 1);
$this->db->where('type', 'news');
return $this;
}
}
Run Code Online (Sandbox Code Playgroud)
由于我们正在返回$this,我们可以将这些方法链接到其他MY_Model方法.在我们的控制器:
$this->data['news'] = $this->news_model->active_news()->get_all();
Run Code Online (Sandbox Code Playgroud)
这为我们提供了一个更难忘,更清晰,更人性化的语法.