我有一张可以有一个用户的海报。海报可以有很多标签,标签可以有很多海报。现在,我想检索特定用户创建的海报中使用的所有不同标记。我正在使用laravel,因此,ORM是雄辩的。如果有人可以使用雄辩的方式为我提供解决方案,那将非常感激。我只想检索标签
User
班级:
class User extends Model {
public function posters() {
return $this->hasMany(Poster::class);
}
}
Poster
班级:
class Poster extends Model {
public function user() {
return $this->belongsTo(User::class);
}
public function tags() {
return $this->belongsToMany(Tag::class);
}
}
Tag
班级:
class User extends Model {
public function posters() {
return $this->belongsToMany(Poster::class);
}
}
答案 0 :(得分:1)
whereHas 方法允许按相关模型的属性搜索记录。它也适用于嵌套关系,因此您可以使用它来搜索给定用户使用的所有标记。
以下应该可以解决问题:
$tags = Tag::whereHas('posters.user', function($query) {
$query->whereId($userId);
})->get();