按自定义属性的范围或按范围排除的数据

时间:2019-08-18 01:41:32

标签: laravel laravel-5 eloquent

我有一个模型用户,该用户与数据透视表列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()之后对集合进行“过滤”,但是之后我必须手动进行分页,然后在应用程序的多个位置上进行分页。

0 个答案:

没有答案