为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 中的原始查询没有得到任何结果

Laravel 中的原始查询没有得到任何结果

PHP
慕盖茨4494581 2021-11-05 11:00:56
我有一个原始查询,当我在 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();


查看完整回答
反对 回复 2021-11-05
  • 1 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信