Использование IN(:paramters)
вернет только одну строку.
Вам необходимо привязать параметры отдельно, например IN(:parameter1, parameter2)
.Таким образом, вы должны получить ожидаемый результат, если выполните следующие действия:
DB::select("SELECT * FROM my_table WHERE vendor_id IN (':vendor_id1, :vendor_id2',...)",
[':vendor_id1' => 1, ':vendor_id2' => 2]);
Подробнее
Для динамической генерации параметров, если у вас есть массив идентификаторов поставщиков, итеративный по ними создайте еще один ассоциативный массив
$vendors = [];
foreach ($vendorId as $id) {
$vendors[':vendor' . $id] = $id;
}
Тогда
DB::select("SELECT * FROM my_table WHERE vendor_id IN (" . implode(array_keys($vendors), ',') . ")",
$vendors);