Laravel Обновление с селектом

z3r9

Новичок
Здравствуйте. Подскажите пожалуйста, как сделать обновление с селектом в whereIn.
Код:
$table2 = DB::table('table2')->select('table1_id')->whereIn('table2.id', $request->input('selected'))
                   ->groupBy('table1_id');

DB::table('table1')->whereRaw('id IN '.DB::raw("({$table2->toSql()})"))->update(...);
Пробовал вот так, но не срабатывает.
 

WMix

герр M:)ller
Партнер клуба
мне кажется что зря ты через raw мутишь, должно быть проще
https://github.com/illuminate/database/blob/master/Query/Builder.php#L725
// If the value is a query builder instance we will assume the developer wants to
// look for any values that exists within this given query. So we will add the
// query accordingly so that this query is properly executed when it is run.
PHP:
DB::table('table1')->whereIn('id',$table2)
 

fixxxer

К.О.
Партнер клуба
Если собирать подзапросы самостоятельно, надо не забыть о плейсхолдерах и binding-ах. В $table2 у тебя как минимум есть один binding (table2.id). В $table2->toSql() у тебя там будут плейсхолдеры, а значения можно взять через $table2->getBindings() и, например, вмержить в другой билдер через mergeBindings.

Но вообще в данном конкретном случае все проще, см. ответ WMix.
 
Сверху