Laravel Eloquent 关系条件

问题描述 投票:0回答:2

我在 Laravel 中有两个模型:文章和相关产品。

文章类

public function related_products()
{
    return $this->hasMany(\App\Models\ArticleProduct::class, 'article_id', 'id');
}

文章产品类别

public function related_product()
{
    return $this->belongsTo(\App\Models\Product::class, 'product_id', 'id');
}

我得到了文章,想要得到

related_products
,其中状态设置为 1。

我能够通过以下代码获得它们

foreach ($article->related_products as $i => $product) {
    if ($product->related_product->status == 1) {
        array_push($related_tour, $product->related_product);
    }
}

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

php laravel eloquent relation
2个回答
0
投票

您也可以将

->where
子句与belongTo一起使用,例如。

public function related_product()
{
    return $this->belongsTo('App\Models\Product', 'product_id', 'id')
        ->where('status', true);
}

请尝试一下并让我知道它是如何工作的:)


0
投票

试试这个:

public function relatedTours()
{
    return $this->belongsTo(\App\Models\Product::class, 'product_id', 'id')
        ->where('status', 1);
}

按照你的逻辑:

$article->relatedTours
© www.soinside.com 2019 - 2024. All rights reserved.