Laravel “拉雷维尔雄辩”;加上;及;加上;关系查询->;将列值作为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

我有3个模型“类别”(表名='categories'),“品牌”('brands'),“项目”('items'))

我可以传递父列值(例如类别)以在Where子句中使用它吗? 简单的例子:

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