Laravel 4.2按关系列值进行Eloquent查询

时间:2014-10-15 09:16:04

标签: laravel laravel-4 eloquent

祝大家好日子......

我正在尝试根据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)

只返回标签的一个子集。

尝试了一些没有成功的事情,以及这里可用的许多优秀大脑。

非常感谢。

1 个答案:

答案 0 :(得分:2)

您需要以下列方式使用whereHas

$tags = Tag::whereHas('usage', function($q)
{
    $q->whereModel('modelname');

})->get();