祝大家好日子......
我正在尝试根据Eloquent(Laravel 4.2)中相关表格中的列访问集合。
我有以下表格:
标记:
(int) id
(string) name
tag_usage:
(int) id
(string) model (the name of the model that is allowed to use the tag)
tag_tag_usage :( pivot)
(int) id
(int) tag_id
(int) tag_usage_id
我还有一个taggables(多态存储多个模型的标签)表,我认为这个表格超出了范围,因为我只想检索允许用于每个模型的标签。
我的标签模型具有关系
public function usage()
{
return $this->belongsToMany('TagUsage');
}
并且TagUsage模型有
public function tags() {
return $this->belongsToMany('Tag');
}
现在,我要做的是返回仅具有特定用途的标签,一些伪代码将
get_tags-> where(tag_usage.model = modelname)
只返回标签的一个子集。
尝试了一些没有成功的事情,以及这里可用的许多优秀大脑。
非常感谢。
答案 0 :(得分:2)
您需要以下列方式使用whereHas
:
$tags = Tag::whereHas('usage', function($q)
{
$q->whereModel('modelname');
})->get();