次の単純なクエリを検討してください。
$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 で書き直したくありません。
数時間いじった後、動作するようになったので、誰かが再び必要になった場合に備えて共有してください。
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 で書く可能性があります :)
難しいもの。CI のソース コードを見てきましたが、そのための「ハック」は見当たりません。おそらく、この CI の方法を使用できます。
$this->db->count_all_results();