Доступ к аутентифицированному пользователю в модели Laravel 5.4 - PullRequest
0 голосов
/ 25 июня 2018

Я создаю приложение с ценами. Я хотел бы назначить особую цену некоторым конкретным пользователям. В модели, которая имеет цену, я пытаюсь использовать аксессор, чтобы «подправить» цену следующим образом:

public function getPriceAttribute($price)
{
    dd(auth()->user()); //this returns null

    if (auth()->check()) {
        $user = auth()->user();
       return $user->aDefinedRelationship()->first()->price;
    }

    return $price;
}

Однако auth()->user() всегда возвращает null.
Я использую традиционную аутентификацию Laravel, никакой внешней библиотеки.
Пожалуйста, есть что-то, что я не правильно делаю?
Любая помощь будет оценена.

Дополнительная информация:

auth.php

return [

'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
],


'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Api\V1\Models\User::class,
    ],

],

];


ThePriceModel.php

namespace App\Api\V1\Models;

use Illuminate\Database\Eloquent\Model;

class ThePriceModel extends Model
{
protected $table = 'prices';

protected $fillable = ['code', 'price'];

public function getPriceAttribute($price)
{
    dd(auth()->user()); //this returns null

    if (auth()->check()) {
        $user = auth()->user();
       return $user->aDefinedRelationship()->first()->price;
    }

    return $price;
}

}

1 Ответ

0 голосов
/ 25 июня 2018

После того, как все остальное не удалось, я прибегнул к использованию глобальной переменной конфигурации.

в config/constants.php:

return [
  ...
  'user' => []
];


где-то в моем контроллере:

config()->set('constants.user', auth()->user());


Тогда в модели:

...
public function getPriceAttribute($price)
{
   $user = config()->get('constants.user');
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...