есть модель Category
class Category extends Model
{
use HasFactory;
protected $table = 'categories';
public function products()
{
return $this->hasMany(Product::class);
}
}
и модель Product
class Product extends Model
{
use HasFactory;
protected $table = "products";
public function category() {
return $this->belongsTo(Category::class, 'category_id');
}
}
как вывести категории и все товары к ним (такой момент, что нужно вывести только те категории у которых есть товары)
вывод такой:
-Название категории
---Товар 1
---Товар 2
---Товар 3
-Название категории 2
---Товар 4
---Товар 5
---Товар 6
попробовал так, но не выдает товары
$column = [
'id',
'name',
'path',
'image',
'slug',
];
$columnProduct = [
'id',
'name',
'path',
'image',
'slug',
];
$categories = Category::select($column)
->with(['products' => function($query) use ($columnProduct, $shopId) {
$query->select($columnProduct);
$query->where('shop_id', $shopId);
}])
->where('is_published', 1)
->get();