如何实现Codeigniter语法单个where和orderby子句到多个" get"疑问?

时间:2016-02-24 07:16:42

标签: php mysql codeigniter

我有两个get个查询,最后使用array_merge()进行合并,但在此之前我的whereorder_by子句在首次执行{{1}时实现只根据OOPS概念进行查询。但是我希望在两个查询上实现这个getwhere子句,而不需要为第二个执行查询编写单独的order_bywhere子句。我的代码如下:

order_by

2 个答案:

答案 0 :(得分:1)

试试这个

        $this->db->where('lower(status) <>', 'completed');
        $this->db->order_by('calldate','asc');

        $q = $this->db->get('records'); //where and orderby applies to this query only
        $data1 = $q->result_array();
        $q = $this->db->get('other_records'); //where and orderby does not apply to this

        $data2 = $q->result_array();
        $data = array_merge($data1, $data2);

答案 1 :(得分:1)

您可以使用UNION编写原始SQL。例如

SELECT * FROM records WHERE lower(status)<>'completed' ORDER BY calldate ASC
UNION
SELECT * FROM other_records WHERE lower(status)<>'completed' ORDER BY calldate ASC

然后您可以避免发送2个单独的查询并合并数组。它减少了网络往返,以发送合并数组所需的查询和CPU资源。