Laravel применить условие where к запросу assignToMany с использованием метода with () - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть таблица products с brand_id и таблица category_products с product_id и category_id.

Модель My Products:

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

Модель моих брендов:

class Brand extends Model
{
   public function products() {
     return $this->hasMany(Product::class)->with(['categories']);
   }
}

Мой вопрос: как я могу получить продукты из экземпляра Brand, который принадлежит определенной категории?

$brand = App\Brand::find(1);

/* 
  I want to be able to do something in the likes of :
*/

 $brand->products_which_are_under_this_category

1 Ответ

1 голос
/ 06 ноября 2019

Удалите метод with(['categories']) изнутри products() и напишите такой запрос.

$brand->products()->with(['categories' => function ($query) {
    $query->where('category_id', CATEGORY_ID);
}])->get();

Надеюсь, что это может помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...