代码点火器中的多个where()调用或关联数组

时间:2012-08-29 02:18:31

标签: php database codeigniter activerecord

我有一个查询将其作为其中的一部分:

$this->db->where(array(
                 'jobs.open_intentions' => 1,
                 'jobs.open'            => 1, 
                 'jobs.pending'         => 0,
                 'jobs.awarded'         => 0));

哪种方法很好,但我不喜欢那种格式,实际上我更喜欢把它写成

$this->db->where('jobs.open_intentions', 1) 
         ->where('jobs.open', 1) 
         ->where('jobs.pending', 0)
         ->where('jobs.awarded', 0);

尼特采摘我知道,但无论如何,我的问题是,是否有任何理由我应该选择一种方法而不是另一种方法呢?

3 个答案:

答案 0 :(得分:1)

从语义上讲,后者(多个where s)对我来说更像是多个AND - 条款。对于前者,意图不明确(没有查看API文档)。

答案 1 :(得分:1)

虽然后来的方法很常用,但为了简单和清晰的代码,你也可以这样做

$where  =    array(
             'jobs.open_intentions' => 1,
             'jobs.open'            => 1, 
             'jobs.pending'         => 0,
             'jobs.awarded'         => 0
             );
$this->db->where($where);

答案 2 :(得分:0)

我在后面看到的一个优点就是你可以使用不同的where子句,例如: or_where,where_in,or_where_in使用干净的代码,这在以前的代码中非常困难。但是,如果您使用单个运算符,则两者都相同。