我有一个模型用户,该用户与数据透视表列Relationships
的表relationship_level
具有多态关系。
public function activities()
{
return $this->morphedByMany('App\Activity', 'relationship')->withPivot('relationship_level')->withTimestamps();
}
public function relationships()
{
return $this->hasMany('App\Relationship');
}
我想要以下一项:
我希望scopeNoCitizens
排除具有Relationship_level Citizen
的每个人,无论他与其他人有什么关系。
我尝试过:
scopeNoCitizens($query) {
$query->whereHas('relationship', function($query) {
$query->where('relationship_level', '!=', 'Citizen');
});
}
这行不通,可能是因为所有用户都有多个级别,而我希望每个拥有citizen
级别的记录中甚至只有一个记录的人都被排除在集合之外。
我也有一个自定义属性getHighestRoleAttribute,但据我所知,您不能按作用域中的accessor / custom属性进行过滤。
我目前要做的是在get()
之后对集合进行“过滤”,但是之后我必须手动进行分页,然后在应用程序的多个位置上进行分页。