$parts = Part::with('categories')->where('parts.brand_id','=', $brand->id)->get(); // Получил запчасти привязанные к бренду
foreach($parts as $part)
{
foreach($part->categories as $category)
{
// Привязываем категорию к бренду через pivot;
}
}
Еще вопрос, когда например мне нужен замудренный каталог или что-то не стандартное, как я выше скинул + большое количество записей, я же могу например сделать сводную таблицу pivot_brаnd_categories и в фоновом режиме, использую php workers и менеджер очередей, раз в сутки например перебирать все категории и привязывать их к бренду, и по запросу просто отдавать нужные категории, без долгих обращений к БД . На сколько это хорошее решение?
Вообщем, пока остановился на таком варианте, требуемые функции выполняет:
public function partsByBrand($brand, $category)
{
if(isset($category) && !empty($category))
{
$parts = Part::where('brand_id', '=', $brand->id)->whereHas('categories', function ($query) use ($category)
{
return $query->where('category_id', $category->id);
})->get();
return $parts;
}
$brand_categories = PartCategory::whereHas('parts', function($query) use ($brand)
{
return $query->whereHas('brand', function($query) use ($brand) {
return $query->where('brand_id', $brand->id);
});
})->orderBy('created_at', 'desc')->get();
return $brand_categories;
}