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

Sag*_*tam 0 php model relationship laravel

我遵循数据结构,

产品

  1. ID
  2. 名称
  3. 描述

产品审核

  1. ID
  2. 用户身份
  3. PRODUCT_ID
  4. 评论
  5. 评分
  6. 状态(真/假)

关系是一对多,即一个产品有很多评论.

我想要的是加载所有经过验证评论的产品(即状态为真的评论)

我试过跟着,

 $products = Product::with('reviews')->get();
Run Code Online (Sandbox Code Playgroud)

但是当我迭代$products访问$ product-> reviews等评论时,会显示所有评论(甚至是状态错误评论).

任何建议都表示赞赏.

Jer*_*dev 6

您可以向with函数添加闭包以添加额外的过滤.

Product::with([
    'reviews' => function ($query) { $query->where('status', true); }
])->get();
Run Code Online (Sandbox Code Playgroud)

另一种选择是为产品模型添加过滤关系函数.

public function verifyedReviews() {
    return $this->reviews()->where('status', true);
}
Run Code Online (Sandbox Code Playgroud)

现在在你的with子句中调用这个函数.

Product::with('verifyedReviews')->get();
Run Code Online (Sandbox Code Playgroud)