Laravel Sanctum 自定义模型在执行 createToken 时抛出未知列

Laravel Sanctum custom model throwing unkown column when exectuting createToken

我正在使用 Laravel Sanctum 并自定义了模型(遵循此处的配置:https://laravel.com/docs/9.x/sanctum#overriding-default-models)。

目前我的模型结构如下:

id
tenant_id
name
token
abilities
last_used_at
created_at
updated_at
deleted_at (softdeletes)

当我尝试创建令牌 $user->createToken('test') 时出现错误:

'field list' 中的未知列 'tokenable_id'(也就是 'tokenable_type'),即。它正在尝试使用开箱即用的实现来生成令牌。

什么是最好的(最干净的)方法来让它工作。我基于基于帐户的令牌而不是基于用户的令牌来使用它。

谢谢

Sanctum 允许您开箱即用地在任何模型上定义令牌。如果你有一个 TenantModel,你可以只包含 trait

class TenantModel extends Model
{

use HasApiTokens;
...

那你可以做

$tenant->createToken('test') 

并使用令牌租户 returns 你。基本上您不需要为您的用例修改基础模型。

您也可以稍后将 HasApiTokens 添加到其他模型,不会有任何问题,相同的标记 table 将通过利用可变形列来使用。