laravel проблема с блокировкой при создании токенов: 'tokenable_id' не может быть нулевым - PullRequest
0 голосов
/ 06 марта 2020

Обновлены до Laravel 7 и установлены Laravel / Airlock.

Следуя инструкциям по установке, при попытке создать токен я получаю сообщение об ошибке

SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец 'tokenable_id' не может быть пустым (SQL: вставить в значения personal_access_tokens (name, token, abilities, tokenable_id, tokenable_type, updated_at, created_at) (api-токен, 31afd4da089878bd2cd562264bd2d8c789c7a1f91e47f6c3969bce2fc "a7732:" [19] order 77 , "order: view", "WLR3: check_availability"],?, App \ Models \ User, 2020-03-06 10:44:05, 2020-03-06 10:44:05))

в моем TokenController. php у меня есть:

public function create(User $user, Request $request)
{
    $token_name = $request->input('token_name', 'api-token');

    $abilities = $request->input('abilities', [
        'order:create',
        'order:view',
        'WLR3:check_availability'
    ]);

    $token = $user->createToken($token_name, $abilities);

    return $this->view($user, $request);
}

Что я пропустил, что может быть причиной этой ошибки?

На модели пользователя она начинается с:

use Laravel\Airlock\HasApiTokens;

class User extends Authenticatable /* implements MustVerifyEmail */
{
    use HasRoles, HasApiTokens, Notifiable;

    protected $guard_name = 'web';

1 Ответ

1 голос
/ 06 марта 2020

Rook ie error ... Похоже, что $ user, созданный для внедрения зависимостей, был недопустимым.

Мне нужно добавить:

$user = Auth::user();

к метод create, теперь он выглядит так:

public function create(Request $request)
    {
        $user = Auth::user();

        $token_name = $request->input('token_name', 'api-token');

        $abilities = $request->input('abilities', [
            'order:create',
            'order:view',
            'WLR3:check_availability'
        ]);

        $token = $user->createToken($token_name, $abilities);

        return $this->view($user, $request);
    }

теперь это работает!

...