Część danych (pytań) jest dostępna tylko dla userów zalogowanych (flaga is_login_required).
Upierdliwe jest ustawianie tego w sporej ilości miejsc pojedyńczym scopem (np. scopeForGuests
). Jak pobieram liczbę pytań dla danej kategorii to też się robi ciekawie, bo jak jest global scope to z automatu mi je ogranicza i wystarczy sama relacja.
public function questionsCount()
{
return $this->questions()
->selectRaw('category_id, count(*) as count')
->groupBy('category_id');
}
public function getQuestionsCountAttribute()
{
$relation = $this->getRelation('questionsCount')->first();
return !empty($relation) ? $relation->count : 0;
}
Chciałbym, żeby domyślnie dla niezalogowanych użytkowników liczba pytań była ograniczana do tych, które mogą widzieć, czyli is_login_required = false
. Gdybym miał dostęp do fasady Auth w momencie bootowania modelu to by było wszystko fajnie, ale niestety tak nie jest i obawiam się, że ręcznie będę musiał dodawać ten scope w każdym miejscu w systemie, bo w 99% przypadków to ograniczenie jest potrzebne.