gpt4 book ai didi

php - 使用多个 ON 条件加入查询在 codeigniter 中不起作用?

转载 作者:可可西里 更新时间:2023-11-01 08:20:29 24 4
gpt4 key购买 nike

我需要这样的查询

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();

但是我得到了这个错误

But i got this error

最佳答案

如果您检查 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();

关于php - 使用多个 ON 条件加入查询在 codeigniter 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14475763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com