У меня есть несколько областей моей модели для relativeTo
или notRelativeTo
:
public function scopeRelativeTo($query, User $user)
{
$teamIDs = $user->teams->pluck('id');
$query->where('assigned_user_id', $user->id)
->orWhere('reported_by', $user->id)
->orWhereIn('assigned_team_id', $teamIDs);
}
public function scopeNotRelativeTo($query, User $user)
{
$teamIDs = $user->teams->pluck('id');
$query->where('assigned_user_id', '!=', $user->id)
->orWhere('reported_by', '!=', $user->id)
->orWhereNotIn('assigned_team_id', $teamIDs);
}
Они помогают построить запрос на основе возможных совпадений, которые, по сути, сводятся к тому, имеет ли пользователь отношение к объекту или нет. Они отлично подходят для запросов, но я также пытаюсь создать метод доступа к модели, который будет возвращать логическое значение, чтобы каждый объект динамически знал свою относительность для аутентифицированного пользователя. Хорошая идея, но не уверен, с чего даже начать.
public function getRelativityAttribute($value)
{
$user = User::find(auth('api')->user()->id);
}
С аутентифицированным пользователем и зная, что у меня также есть доступ к фактическому классу: $this
, как я могу проверить относительность на основе тех же проверок в областях и вернуть логическое значение?