Laravel Eloquent — метод получения данных внуков от бабушек и дедушек

#laravel #laravel-5 #eloquent

#laravel #laravel-5 #eloquent

Вопрос:

Я создаю веб-сайт электронной коммерции, и у меня следующие отношения:

Бабушки и дедушки: категория (идентификатор, имя)
Родители: Бренд (идентификатор, имя, category_id)
Дочерние элементы: Product (id, name, brand_id)

Пример : Смартфон (категория) -> iPhone (бренд) -> iPhone 12, iPhone 12 Pro, iPhone 12 Pro Max (продукт)
Я хочу получить все iPhone 12, как указано выше, из категории «Лайки»

$iPhone = AppCategory::find(1)->brands->where('name','iPhone')->toArray()

Спасибо за помощь

Комментарии:

1. используйте отношение hasManyThrough

Ответ №1:

ЧТОБЫ получить все товары от бренда «iPhone» для категории «Смартфон»

 
$iphones = Category::whereName('Smartphone')
    ->with(['brands' => function($query){
        $query->with('products')->whereName('iPhone');
    })
    ->get();
 

Ответ №2:

Попробуйте выполнить этот запрос

  $iPhones = AppCategory::whereHas('brands', function ($query)
        {
            $query->where('name','iPhone');
        })->get();