Laravel 5.5:从模型中过滤查询

时间:2019-01-08 07:57:09

标签: php laravel

我有一个Product Model。产品具有多种变体,我在Product.php

中具有此功能
public function variants()
{
return $this->hasMany('App\Models\Variant', 'product_id');
}

我只想显示is_published的值为1的变体,所以我尝试了此操作,就像我在控制器中所做的一样,但它不起作用,它甚至显示了变体尽管is_published0

public function variants()
{
return $this->hasMany('App\Models\Variant', 'product_id')->where('is_published', true);
}

2 个答案:

答案 0 :(得分:3)

您应该尝试以下操作:

您的模型

public function variants()
{
return $this->hasMany('App\Models\Variant', 'product_id');
}

public function variants_publish() {
        return $this->variants()->where('is_published',true);
    }

您的控制器查询如下:

$rsltDetails = YourModel::find(1);
var_dump( $rsltDetails->variants_publish()->get() );

答案 1 :(得分:-2)

添加is_published 1的值,而不是true

public function variants()
{
    return $this->hasMany('App\Models\Variant', 'product_id')->where('is_published', 1);
}