Я пытаюсь связать массив в сыром 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)
кто-то знает, могу ли я сделать это как-нибудь?
попробуйте это в 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);
это будет работать для вас.
или же
DB::table("test1")->whereIn('id', $arr)->get();
или красноречивый:
$q= TestModel::where('id',$arr)->get();