Php 如何在laravel中获得产品的验证评论
我有以下数据结构 产品 身份证件 名称 描述 产品评论 身份证件 用户id 产品标识 回顾 评级 状态正确/错误 关系是一对多的,即一个产品有许多评论 我想要的是加载所有带有验证的reviewsi.e的产品。状态为true的评论 我试着跟随Php 如何在laravel中获得产品的验证评论,php,laravel,model,relationship,Php,Laravel,Model,Relationship,我有以下数据结构 产品 身份证件 名称 描述 产品评论 身份证件 用户id 产品标识 回顾 评级 状态正确/错误 关系是一对多的,即一个产品有许多评论 我想要的是加载所有带有验证的reviewsi.e的产品。状态为true的评论 我试着跟随 $products = Product::with('reviews')->get(); 但是,当我迭代$products以访问评论,如$product->reviews时,将显示所有reviews甚至状态错误的评论 欢迎您提供任何建议。您可以向w
$products = Product::with('reviews')->get();
但是,当我迭代$products以访问评论,如$product->reviews时,将显示所有reviews甚至状态错误的评论
欢迎您提供任何建议。您可以向with函数添加一个闭包以添加额外的筛选
Product::with([
'reviews' => function ($query) { $query->where('status', true); }
])->get();
另一个选项是向产品模型添加过滤关系函数
public function verifyedReviews() {
return $this->reviews()->where('status', true);
}
现在在with子句中调用这个函数
Product::with('verifyedReviews')->get();
用clousre试试这个
$products = Product::with(['reviews' => fuction($query) {
return $query->where('status',true);
}])->get();
你可以用WhereHas
您的代码是:
$products = Product::whereHas('reviews',function($query){
return $query->where('status',true);
})->get();
谢谢,我把return留在函数里面了。我很高兴能帮上忙。如果这解决了你的问题,考虑把这个标记为答案,其他用户也会发现这一点。当然,15分钟就可以接受:D。