我在 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);
}
}
有更好的方法来实现这一目标吗?
您也可以将
->where
子句与belongTo一起使用,例如。
public function related_product()
{
return $this->belongsTo('App\Models\Product', 'product_id', 'id')
->where('status', true);
}
请尝试一下并让我知道它是如何工作的:)
试试这个:
public function relatedTours()
{
return $this->belongsTo(\App\Models\Product::class, 'product_id', 'id')
->where('status', 1);
}
按照你的逻辑:
$article->relatedTours