Уведомления не возвращаются - PullRequest
1 голос
/ 09 марта 2019

Я пытаюсь получить непрочитанные уведомления пользователя через мой контроллер.

Это работает:

public function notifications(){

    return \App\User::find(auth()->user()->id)->unreadNotifications()->limit(5)->get();
}

Это не так, возвращает пустую коллекцию:

public function notifications(){
    return auth()->user()->unreadNotifications()->limit(5)->get();
}

Не могли бы вы сказать мне, что мне не хватает? Заранее спасибо.

Использование Laravel 5.8 с Backpack 3.5.

По умолчанию средство проверки подлинности Laravel отключено для использования проверки подлинности Backpack на маршрутах рюкзака с использованием промежуточного программного обеспечения UseBackpackAuthGuardInsteadOfDefaultAuthGuard пакета диспетчера разрешений. В остальном контроллере auth () и backpack_auth работает нормально.

Ответы [ 2 ]

0 голосов
/ 10 марта 2019

Auth и auth() скорее всего не будут работать здесь, потому что вы используете аутентификацию Backpack For Laravel, в которой используется защита, отличная от используемой Laravel по умолчанию.

Это, вероятно, будет работать для вас:


backpack_user()->unreadNotifications()->limit(5)->get();

Если это работает, вот почему:

Если вы посмотрите на project/vendor/backpack/base/src/helpers.php, вы увидите, что backpack_user() является псевдонимом для backpack_auth()->user(), а backpack_auth делает:

return \Auth::guard(backpack_guard_name());

Это важный бит, потому что он захватывает охрану, определенную config/backpack/base.php (которая по умолчанию составляет backpack), и использует ее вместо защиты по умолчанию Laravel web.

0 голосов
/ 09 марта 2019

Попробуйте:

public function notifications()
    return Auth::user()->unreadNotifications()->limit(5)->get();
}

Как сказано в документах:

Вы можете получить доступ к аутентифицированному пользователю через фасад Auth:

В качестве альтернативы, один разпользователь аутентифицирован, вы можете получить доступ к аутентифицированному пользователю через экземпляр Illuminate \ Http \ Request.Помните, классы с подсказками типов будут автоматически внедряться в методы вашего контроллера:

...