我在 Laravel 中的登录代码如下
if (!$token = auth('api')->attempt($credentials)) {
return response()->json(['error' => 'Unauthorized'], 401);
}
$infoUser = Auth::guard('api')->user();
$personAccessToken = [
'tokenable_type' => "App\Models\User",
'tokenable_id' => $infoUser->id,
'name' => $infoUser->name,
'token' => $token,
];
PersonalAccessToken::updateOrCreate(['tokenable_id' => $infoUser->id], $personAccessToken);
当我在邮递员上测试 API 时,它显示错误“ SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'token' at row 1 (SQL: insert intopersonal_access_tokens ”。令牌值是从此函数生成的auth('api')->attempt($credentials)。
表中的Token 列personal_access_tokens由 Laravel 创建,字符串长度为 64,并且是唯一的。如果我更改为文本,则此字段无法设置唯一。我该如何解决这个问题?大家可以帮帮我吗?