在活动记录中获取加入结果的计数

时间:2012-06-20 19:29:34

标签: codeigniter activerecord

Conider这个简单的查询:

$this->db->join('bids','bids.bid_for = request_quote.quoteid','left');

有没有办法可以改变它,所以不是加入结果,而是加入它找到的所有出价的COUNT?

我可以在纯SQL中重写它,但它是更大的查询的一部分,我不想在SQL中重写

2 个答案:

答案 0 :(得分:0)

艰难的一个。我查看了CI的源代码,但我没有看到“hack”。 也许你可以使用这个CI的方法:

$this->db->count_all_results();

答案 1 :(得分:0)

好了几个小时后我开始工作了,所以不要分享它以防万一有人再需要它:

    public function getAllJobsByUserId($userid){
        $this->db->select('quoteid')->select('quoteby')->select('country_from')
    ->select('country_to')->select('city_from')->select('city_to')
    ->select('countries.country_name, countries_to.country_name AS     country_name_to')
        ->select('COUNT(\'bids.bid_id\') as bid_count');
        $this->db->from('request_quote');
        $this->db->where('quoteby',$userid);
        $this->db->join('countries','countries.country_id = request_quote.country_from');
        $this->db->join('countries as countries_to','countries_to.country_id = request_quote.country_to');
        $this->db->join('bids as bid_count','bid_count.bid_for = request_quote.quoteid','outter');
        $query=$this->db->get();
    return $query->result();
    }

这似乎有效。但是在未来的病例中,可能会直接在SQL中编写更复杂的查询:)