Я хочу написать этот запрос красноречиво, используя необработанные запросы:
INSERT INTO table SELECT * FROM other_table WHERE other_table_id IN (1,2,3)
Я пытался написать его так:
use Illuminate\Database\Capsule\Manager as DB;
$insert_db = DB::select("SELECT products_id FROM products WHERE products_id IN (?)", [[265792,265787,265743]])
Но это дает мне пустой массивв следствии.
Как правильно написать это с помощью диспетчера капсул?(Мне абсолютно необходимо сделать это, используя DB::select
)
Этот вопрос задает то же самое, еще в 2013 году. Тогда это было невозможно.Так что изменилось сегодня?Можем ли мы использовать WHERE IN (?)
в последних версиях eloquent?Зная, что мне НУЖНО использовать ?
для обеспечения безопасности, а не объединять строку, иначе было бы бессмысленно использовать PDO вообще.
РЕДАКТИРОВАТЬ:
Вопрос больше о динамических значениях.Я не могу использовать:
DB::select("SELECT products_id FROM products WHERE products_id IN (?, ?, ?)", [265792,265787,265743]);
Поскольку массив [265792,265787,265743]
создается в другом месте.Итак, представьте следующий код
foreach($test as $k => $v) {
$arr[] = $v['something']
}
DB::select("SELECT products_id FROM products WHERE products_id IN (?)", [[$arr]]);