Php 如何在laravel中获得产品的验证评论

Php 如何在laravel中获得产品的验证评论,php,laravel,model,relationship,Php,Laravel,Model,Relationship,我有以下数据结构 产品 身份证件 名称 描述 产品评论 身份证件 用户id 产品标识 回顾 评级 状态正确/错误 关系是一对多的,即一个产品有许多评论 我想要的是加载所有带有验证的reviewsi.e的产品。状态为true的评论 我试着跟随 $products = Product::with('reviews')->get(); 但是,当我迭代$products以访问评论,如$product->reviews时,将显示所有reviews甚至状态错误的评论 欢迎您提供任何建议。您可以向w

我有以下数据结构

产品

身份证件 名称 描述 产品评论

身份证件 用户id 产品标识 回顾 评级 状态正确/错误 关系是一对多的,即一个产品有许多评论

我想要的是加载所有带有验证的reviewsi.e的产品。状态为true的评论

我试着跟随

 $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。