考虑这个简单的查询:
$this->db->join('bids','bids.bid_for = request_quote.quoteid','left');
有没有办法改变它,所以它不是加入结果,而是加入它找到的所有出价的 COUNT ?
我可以用普通 SQL 重写它,但它是更大查询的一部分,我不想用 SQL 重写
考虑这个简单的查询:
$this->db->join('bids','bids.bid_for = request_quote.quoteid','left');
有没有办法改变它,所以它不是加入结果,而是加入它找到的所有出价的 COUNT ?
我可以用普通 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 中编写更复杂的查询 :)