我遵循的是数据结构,
产品
产品评论
关系是一对多的,即一种产品具有很多评论。
我要加载的所有产品均带有经过验证的评论(即状态为true的评论)
我已经尝试关注
$products = Product::with('reviews')->get();
但是当我遍历$products
以访问诸如$ product-> reviews之类的评论时,将显示所有评论(甚至状态错误的评论)。
任何建议都值得赞赏。
答案 0 :(得分:6)
您可以在with函数中添加一个闭包以添加额外的过滤条件。
Linux Kali 4.18.0-kali2-amd64 #1 SMP Debian 4.18.10-2kali1 (2018-10-09) x86_64 GNU/Linux
另一种选择是将过滤的关系函数添加到您的产品模型中。
Product::with([
'reviews' => function ($query) { $query->where('status', true); }
])->get();
现在在您的with子句中调用此函数。
public function verifyedReviews() {
return $this->reviews()->where('status', true);
}
答案 1 :(得分:1)
使用clousre试试这个
$products = Product::with(['reviews' => fuction($query) {
return $query->where('status',true);
}])->get();
答案 2 :(得分:0)
您可以使用 WhereHas()
您的代码应为:
$products = Product::whereHas('reviews',function($query){
return $query->where('status',true);
})->get();