Laravel雄辩的关系条件

时间:2018-12-28 01:15:56

标签: laravel eloquent relation

我在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);
    }
}

有没有更好的方法来实现这一目标?

2 个答案:

答案 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