Laravel Sanctum:未找到列:“where 子句”中的 1054 列“api_token”未知

Ter*_*nal 8 php laravel laravel-sanctum

包裹:圣所

在请求获取数据时生成令牌后,它会像这样抛出我的错误

Illuminate\Database\QueryException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'api_token' in   
'where clause' (SQL: select * from `users` where `api_token` = XAzuNGUeOJ8CXbIoGEWhBTtWIFr0lFr8jjwScXQ4B0Qxfmu
2cHm9LaUwGX96zy0AnXhLLcCnBFCodQaOlimit 1) in file
Run Code Online (Sandbox Code Playgroud)

小智 19

去 config/auth.php

并将守卫中的 api 数组更改为 sanctum 示例:

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

        'api' => [
            'driver' => 'sanctum',
            'provider' => 'users',
            'hash' => false,
        ],
    ],
Run Code Online (Sandbox Code Playgroud)

  • 确实是的。很高兴他们将其放入文档中。为此浪费了几个小时。 (2认同)

小智 7

转到routes/api.php并使用此

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});
Run Code Online (Sandbox Code Playgroud)

代替

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});
Run Code Online (Sandbox Code Playgroud)


小智 0

运行迁移,然后检查,如果仍然存在问题,则users表没有api_token字段,或者未在数组User内的模型中定义字段$fillable