@kostya1704

Как в Laravel передать массив условий в whereIn?

Как в Laravel передать массив условий в whereIn?
//Все заказы юзера
$orders = Auth::user()->orders;

//Выборка всех продуктов из всех заказов юзера
$products = DB::table('products')
        ->join('order_product', function ($join) {
            $join->on('products.id', '=', 'order_product.product_id')
       ->whereIn('order_product.order_id', $orders);
        })
        ->get();

Переменную $orders вносил в разном виде : array($orders->id ); [$orders->id ] ; через foreach проганял.

Такой ответ - Argument 1 passed to Illuminate\Database\Query\Builder::cleanBindings() must be of the type array, string given.

Если массив указан в виде как ниже , запрос работает.
->whereIn('order_product.order_id', [12,23,24,56]);
  • Вопрос задан
  • 737 просмотров
Решения вопроса 2
JhaoDa
@JhaoDa
LaravelRUS Team
->whereIn('order_product.order_id', Auth::user()->orders()->pluck('id'))
Ответ написан
Комментировать
@jazzus
Product::whereHas('orders', function ($query) use ($user) {
    $query->where('user_id', $user->id);
})
    ->get();
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
New_Horizons
@New_Horizons
Бред:
$orders->pluck('id');

Советую всё-таки изучить php прежде чем за фреймворки хвататься
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы