Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 10.05.2021 10:26:27

Как выбрать все продукты по pivot таблице

Есть связь many to many, задача выбрать все продукты из выбранных категорий по айди
Код модели Product:

public function pivot_where()
    {
        return $this->belongsToMany(Category::class);

    }

В контроллере пишу функцию:

            $arr = [1,2]; //массив с айди категорий
            $product_pivot = Product::all();
            $product_pivot = $product_pivot->pivot->pivot_where->wherePivotIn('category_id', $arr)->get();

Не работает(( Подскажите как надо.

Изменено grafillo (10.05.2021 10:27:02)

Не в сети

#2 10.05.2021 20:20:22

TrueKanonir
Откуда: Ташкент
Сообщений: 221

Re: Как выбрать все продукты по pivot таблице

Ну во первых, all() возвращает коллекцию, а вы к коллекции как к объекту обращаетесь ниже в коде.
Во вторых сделайте нормальное название связей.

PHP
// Product model

public function categories()
{
    return 
$this->belongsToMany(Category::class);
}

И теперь можно получить так

PHP
$products Product::query()->whereHas('categories', function($q) use ($arr) {
    
$q->whereIn('categories.id'$arr);
})->
get();

Не в сети

Подвал раздела