我有一个原始查询,当我在 phpMyAdmin 中运行此查询时,它返回 3 个结果,但是当我尝试使用 Laravel 查询生成器时,我得到一个空数组。我的查询SELECT id, reply_text, sending_timeFROM sms_sender_inbox_repliesWHERE phone_numberIN ('+1234567819', '+19873216154', '+15984989898')AND id IN ( SELECT MAX( id ) FROM sms_sender_inbox_replies GROUP BY phone_number)结果:+----+-----------------+---------------------+| id | reply_text | sending_time |+----+-----------------+---------------------+| 87 | This is a test | 2019-07-30 08:25:26 || 54 | And another one | 2019-07-29 06:35:11 || 12 | Last test | 2019-06-16 09:44:26 |+----+-----------------+---------------------+但是当我尝试使用 Laravel 执行此查询时,我返回一个空数组 []dump($phone_numbers);// 0 => "+1234567819"// 1 => "+19873216154"// 2 => "+15984989898"$phone_numbers = implode("','", $phone_numbers);dump($phone_numbers);// +1234567819','+19873216154','+15984989898dump("SELECT id, reply_text, sending_time FROM sms_sender_inbox_replies WHERE phone_number IN ('$phone_numbers') AND id IN ( SELECT MAX(id) FROM sms_sender_inbox_replies GROUP BY phone_number )");// SELECT id, reply_text, sending_time// FROM sms_sender_inbox_replies// WHERE phone_number// IN ('+1234567819', '+19873216154', '+15984989898')// AND id IN (// SELECT MAX( id ) // FROM sms_sender_inbox_replies// GROUP BY phone_number// )$replies = DB::connection('second_connection') ->select(" SELECT id, reply_text, sending_time FROM sms_sender_inbox_replies WHERE phone_number IN (':phone_numbers') AND id IN ( SELECT MAX(id) FROM sms_sender_inbox_replies GROUP BY phone_number ) ", ['phone_numbers' => $phone_numbers]);dump($replies);// []
1 回答
蓝山帝景
TA贡献1843条经验 获得超7个赞
当您像这样绑定它时,您会尝试将 查找phone_number IN为单个值(而不是 3 个值)。占位符只能是单个值,而不是数组 - 但您可以使用 QueryBuilder 方法解决这个问题,这简化了绑定。
$phone_numbers = ["+1234567819", "+19873216154", "+15984989898"];
$result = DB::connection('second_connection')
->table('sms_sender_inbox_replies')
->select('id', 'reply_text', 'sending_time')
->whereIn('phone_number', $phone_numbers)
->whereIn('id', DB::table('sms_sender_inbox_replies')
->selectRaw('MAX(id)')
->groupBy('phone_number')
->get())
->get();
- 1 回答
- 0 关注
- 114 浏览
添加回答
举报
0/150
提交
取消