Я не знаком с Laravel, поэтому не знаю, работают ли с ним подготовленные операторы, но вы должны что-то сделать, чтобы очистить и / или проверить $res['code']
, чтобы убедиться, что это целое число, при условии, что это то, чтоэто должно быть.
Сначала подготовьте строку для предложения WHERE IN
.
$str = "";
foreach ($responses as $res){
$str .= ','.$res['code'];
}
$str = substr($str,1); // to remove the comma
Тогда вам нужно изменить запрос, чтобы использовать оператор IN
.
WHERE a.hotel_code IN({$str})
Я предполагаю, что image.bo_hotel_code
относится к$res['code']
.Но если этого не произойдет, вы можете изменить свой оператор SELECT
(если память будет служить):
$code = $res['code'];
SELECT {$code} as code,
image.bo_hotel_code,
image.bo_image_type_code,
...
Затем вы зациклите результаты и поместите их в массив таким же образом,где $row['code']
будет ссылаться на код, используемый для его выбора.Это должно быть НАМНОГО быстрее, чем запуск повторных запросов, и для каждого кода должна быть одна строка в операторе IN
.