получить связанные записи между 3 моделями - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть несколько продуктов в 3 категории (например).и у каждого продукта есть бренд.

, поэтому я хочу показать бренды, которые относятся к продуктам в определенной категории.

Модели:

- продукт

--brand

- категория

отношения:

категория имеет много продуктов

марка имеет много продуктов

пожалуйста, направьте меня ксделай это.

спасибо большое

1 Ответ

0 голосов
/ 20 февраля 2019

Учитывая, что у вас есть 3 модели с такими отношениями, как:

Brand Модель:

public function products()
{
    return $this->hasMany(Product::class);
}

Product Модель:

public function brand()
{
    return $this->belongsTo(Brand::class);
}

public function category()
{
    return $this->belongsTo(Category::class);
}

Category Модель:

public function products()
{
    return $this->hasMany(Product::class);
}

Вы можете использовать whereHas:

$brands = Brand::whereHas('products.category', function ($q){
     return $q->where('name', 'category_name');
})->get();

Выше приведены все бренды, у которых есть продукт, относящийся к категории с именем category_name.

* 1021.* Если вы хотите получить информацию о продукте и категории, тогда вы можете загрузить:
$brands = Brand::whereHas('products.category', function ($q){
    return $q->where('name', 'category_name');
})->with(['products', 'products.category'])->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...