Codeigniter 在活动记录中获取join的结果计数
对这个简单的查询排序:Codeigniter 在活动记录中获取join的结果计数,codeigniter,activerecord,Codeigniter,Activerecord,对这个简单的查询排序: $this->db->join('bids','bids.bid_for = request_quote.quoteid','left'); 是否有任何方法可以改变它,因此它不会加入结果,而是加入它找到的所有出价的计数 我可以用普通的SQL重写它,但它是更大查询的一部分,我不想用SQL重写它。我已经看过CI的源代码了,我没有看到一个“黑客”。 也许您可以使用此CI的方法: $this->db->count_all_results(); 好吧,在
$this->db->join('bids','bids.bid_for = request_quote.quoteid','left');
是否有任何方法可以改变它,因此它不会加入结果,而是加入它找到的所有出价的计数
我可以用普通的SQL重写它,但它是更大查询的一部分,我不想用SQL重写它。我已经看过CI的源代码了,我没有看到一个“黑客”。 也许您可以使用此CI的方法:
$this->db->count_all_results();
好吧,在闲逛了几个小时后,我把它用上了,所以我会把它分享给大家,以防有人再次需要它:
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编写更复杂的查询:)你看,这只会计算我从主查询中得到的所有结果,如果你知道我的意思,它不会关心连接结果。好的,实际上这没有按预期工作。它只返回一个结果。