3

このようなクエリが必要です

SELECT * FROM (`users`) 
     LEFT JOIN `users_phone_numbers`     
              ON `users`.`id`= `users_phone_numbers`.`user_id` 
     LEFT JOIN `phone_number`
             ON (`phone_number`.`id`= `users_phone_numbers`.`phone_num_id` AND users_phone_numbers.is_active = 1)
WHERE `users`.`id` = 56

私はcodeigniterでこのようなコードを持っています

$this->db->select('*');
$this->db->from('users');
$this->db->join('users_phone_numbers',
                              'users.id= users_phone_numbers.user_id',
                              'left');
            $this->db->join('phone_number',
                              '(phone_number.id= users_phone_numbers.phone_num_id AND users_phone_numbers.is_active = 1)',
                              'left'); 
$this->db->where('users.id = '. $id); 
 $result =  $q->result_array(); 

しかし、私はこのエラーが発生しました

しかし、私はこのエラーが発生しました

4

3 に答える 3

3

Codeigniter の条件関数の処理を確認すると、次のようになります。

// Strip apart the condition and protect the identifiers
if (preg_match('/([\w\.]+)([\W\s]+)(.+)/', $cond, $match))

Codeigniter は、クエリから左ブラケットを削除しています。これを回避するために、WHERE 句内の LEFT JOIN 追加句を移動できませんか?

編集:

$this->db->select('*');
$this->db->from('users');
$this->db->join('users_phone_numbers',
                              'users.id= users_phone_numbers.user_id',
                              'left');
            $this->db->join('phone_number',
                              'phone_number.id= users_phone_numbers.phone_num_id)',
                              'left'); 
$this->db->where(array('users.id => '. $id, 'users_phone_numbers.is_active' => 1)); 
 $result =  $q->result_array();
于 2013-01-23T09:22:59.360 に答える
0

の 2 番目の条件を削除する必要がありjoinます。

于 2016-04-09T05:52:06.907 に答える