Laravel “拉雷维尔雄辩”;加上;及;加上;关系查询->;将列值作为Where子句传递
我有3个模型“类别”(表名='categories'),“品牌”('brands'),“项目”('items')) 我可以传递父列值(例如类别)以在Where子句中使用它吗? 简单的例子:Laravel “拉雷维尔雄辩”;加上;及;加上;关系查询->;将列值作为Where子句传递,laravel,eloquent,subquery,relationship,Laravel,Eloquent,Subquery,Relationship,我有3个模型“类别”(表名='categories'),“品牌”('brands'),“项目”('items')) 我可以传递父列值(例如类别)以在Where子句中使用它吗? 简单的例子: Category::with(['brands' => function ($q) { $q->with(['items' => function ($query) use ($localWhereHas) { $query->w
Category::with(['brands' => function ($q) {
$q->with(['items' => function ($query) use ($localWhereHas) {
$query->whereColumn('category_id', 'categories.id');
}]);
}]);
关系是:
类别模型:
public function brands(): BelongsToMany
{
return $this->belongsToMany(Brand::class, 'category_brands')->withPivot('is_visible', 'addon_price');
}
品牌模式:
public function items(): HasMany
{
return $this->hasMany(Item::class, 'brand_id');
}
项目模型:
public function category(): BelongsTo
{
return $this->belongsTo(Category::class, "category_id");
}
主要的想法是,我需要像这样嵌套的类别->品牌->项目的结构
备份计划是获取所有需要的类别,并使用categoryId($category->category_id)让它们获取我拥有的所有品牌->商品的类别数。。。。但是我不喜欢它不,您不能直接传递它,因为它不是相同的上下文 如果您想要这样的显示: 类别 -烙印 -项目 然后,您可以按品牌对您的商品进行分组:
$categories = Category::with('items.brand')->get();
@foreach($categories as $category)
{{ $category->name}}
@foreach($category->items->groupBy('brand_id') as $brand_id => $items)
{{ $items->first()->brand->name }}
@foreach($items as $item)
{{ $item->name }}
@endforeach
@endforeach
@endforeach