2012-03-18 9 views
2

私はCodeigniterで$this->db->get()->row_array()を使用してデータベースから1行の結果を取得しています。私はすべての異なるクエリの結果を1つの配列にマージしようとしています$results;だから私は、以下のこれらの2行ができるように私には見える

...単一行の結果を得るために列名を入力する必要がありますする必要はPHPコード

// Query 1 
$results = array(); 
$this->db->select('COUNT(listing_id) as num') 
     ->from('listings') 
     ->where('city', $city); 
$result = $this->db->get()->row_array(); 
$results['num'] = $result['num']; 

いけませんこれを書くための短い方法。ある?ありがとう!

$result = $this->db->get()->row_array(); 
$results['num'] = $result['num']; 

理想のソリューション

$results['num'] = first_element_of($this->db->get()->row_array());素晴らしいことでしょう!

答えて

3

はCodeIgniterのを知ってはいけないし、それを働いたことはないが、これはトリックは、あなたがチェーンオブジェクトのメンバーへのアクセスをできることです

// Query 1 
$results = array(); 
$this->db->select('COUNT(listing_id) as num') 
     ->from('listings') 
     ->where('city', $city); 

$results['num'] = $this->db->get()->row()->num; 

働くかもしれません。配列($foo->row_array()['num'])でこれを行うことはできないので、ここで問題があります。あなたが良い古いmysqlを使っていたなら、mysql_resultを見てください。これに相当するmysqliはありません。

あなたがしようと

$results = array('num' => 
    $this->db->select('COUNT(listing_id) as num') 
     ->from('listings') 
     ->where('city', $city) 
     ->get() 
     ->row() 
     ->num 
); 
に、さらにそれを短縮することができる場所()の戻り値に応じて、
関連する問題