ГДЕ В ОБЛАСТИ Массива в БД :: raw laravel 5.4

Я пытаюсь связать массив в сыром WHERE IN запрос в Laravel DB

пример:

$arr = [1,2,3];
DB::select(DB::raw("select * from test1 WHERE id IN ? "), [$arr]);

по какой-то причине массив не изменяется на следующий запрос:

select * from test1 WHERE id IN (1,2,3)

кто-то знает, могу ли я сделать это как-нибудь?

0

Решение

попробуйте это в laravel:

$arr = [1,2,3];
$result = DB::table('test1')->whereIn('id', $arr)->get();
dd($result);

И используйте этот для вашего необработанного запроса:

$arr = [1,2,3];
$arr = join(",",$arr);
$result =  DB::select(DB::raw("SELECT * FROM test1 WHERE id IN (".$arr.")"));
dd($result);

Для предотвращения инъекций SQL вы используете что-то вроде того, что я упомянул ниже.

 $arr = [1,2];
$arr = join(",",$arr);
$result =  DB::select(DB::raw("SELECT * FROM test1 WHERE id IN (?,?)"),$arr);
dd($result);

это будет работать для вас.

2

Другие решения

или же

DB::table("test1")->whereIn('id', $arr)->get();

https://laravel.com/docs/5.4/queries#where-clauses

1

или красноречивый:

$q= TestModel::where('id',$arr)->get();
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector