在Laravel中建立条件雄辩的关系

时间:2019-06-17 12:48:50

标签: php laravel eloquent

Laravel 5.7。我有一个雄辩的模型Theme,其中有两个字段idname

另一个模型Filter具有三个字段:idnametheme_id

过滤器:

class Filter extends Model
{
    public function theme()
    {
        return $this->belongsTo('App\Theme');
    }
}

我可以将这些过滤器附加到任意数量的其他型号上,例如模型Foo有两个字段idname。我使用Filterables表将过滤器附加到它:

可过滤的内容:

id | filter_id | filterable_id | filterable_type
------------------------------------------------
1  |  1        |  3            |  App\Foo

上面的示例显示Filter 1的id附加到Foo 3的id上。

现在要获取Foo的所有过滤器,我的Foo模型中就具有这种关系:

Foo:

class Foo extends Model
{
    public function filters()
    {
        return $this->morphToMany('App\Filter', 'filterable');
    }
}

一切正常。但是,现在我想获取Foo模型,并且仅获取过滤器的theme_id1的过滤器。

如何将此条件添加到filters关系中?

1 个答案:

答案 0 :(得分:0)

只需在您的关系中直接添加一个where子句

class Foo extends Model
{
    public function filters()
    {
        return $this->morphToMany('App\Filter', 'filterable')->where('theme_id', 1);
    }
}