在Laravel 5.4中,我有我的关系:
public function products()
{
return $this->hasMany(Product::class);
}
public function category()
{
return $this->belongsTo(Category::class);
}
我的疑问是:
$x = Category::with('products')->where('active', 1)->get();
它确实正确显示所有类别名称,但如何只计算产品' active = 1'?我不想计算所有产品,只计算有效产品。
答案 0 :(得分:1)
试试这个:
$x = Category::with(['products' => function($query) { $query->where('active','=', 1); }])->where('active', 1)->get();
这将为您提供有效的产品,然后只提供产品有效的类别。
答案 1 :(得分:1)
尝试更具体一点。另外还有@linuxartisan的想法
$x = Category::whereHas('products', function ($query) {
$query->where('products.active', '=', 1);
})
->where('categories.active', '=', 1)
->get();
答案 2 :(得分:0)
我假设你有产品的.rule1
字段以及类别。
试试这个查询
active
答案 3 :(得分:0)
public function products()
{
return $this->hasMany(Product::class)->where('active',1);
}
这在Laravel 7中有效