Laravel 5.7。我有一个雄辩的模型Theme
,其中有两个字段id
和name
。
另一个模型Filter
具有三个字段:id
,name
,theme_id
。
过滤器:
class Filter extends Model
{
public function theme()
{
return $this->belongsTo('App\Theme');
}
}
我可以将这些过滤器附加到任意数量的其他型号上,例如模型Foo
有两个字段id
和name
。我使用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_id
为1
的过滤器。
如何将此条件添加到filters
关系中?
答案 0 :(得分:0)
只需在您的关系中直接添加一个where子句
class Foo extends Model
{
public function filters()
{
return $this->morphToMany('App\Filter', 'filterable')->where('theme_id', 1);
}
}