我在Laravel中有两个模型:Article和Relatedproduct。
文章类别
public function related_products()
{
return $this->hasMany(\App\Models\ArticleProduct::class, 'article_id', 'id');
}
ArticleProduct类
public function related_product()
{
return $this->belongsTo(\App\Models\Product::class, 'product_id', 'id');
}
我收到了Article,并希望获得状态设置为1的related_products
。
我能够按照以下代码获取它们
foreach ($article->related_products as $i => $product) {
if ($product->related_product->status == 1) {
array_push($related_tour, $product->related_product);
}
}
有没有更好的方法来实现这一目标?
答案 0 :(得分:0)
您也可以将->where
子句与beforeTo一起使用,例如。
public function related_product()
{
return $this->belongsTo('App\Models\Product', 'product_id', 'id')
->where('status', true);
}
请尝试一下,让我知道它如何工作:)
答案 1 :(得分:0)
试试这个:
public function relatedTours()
{
return $this->belongsTo(\App\Models\Product::class, 'product_id', 'id')
->where('status', 1);
}
按照您的逻辑:
$article->relatedTours