Laravel-str_random() 无法为 api_token 生成唯一的随机字符串
Laravel-str_random() can't generate unique random string for api_token
我正在尝试使用 str_random(60)
和 unique()
函数在我的数据库中为用户的 api_token 生成一个字符串,但看起来我做错了。当我使用 db:seed
两个虚拟用户播种时,他们应该有不同的 api_token(s)。这是我的迁移文件
$table->increments('id');
$table->string('name');
$table->string('email');
$table->string('api_token')->default(str_random(60))->unique();
$table->string('password');
$table->string('remember_token')->nullable();
$table->timestamps();
如果我删除 unique()
功能,用户将拥有相同的 api_token,如果我放回 unique()
,我将出现错误,因为他们将拥有相同的 [=22] =].有人可以帮助我解决这个独特的 api_token 案例吗?
您不应将 default()
与 unique()
一起使用。因为 default()
是一个值,当此列中没有任何值时,它被设置为一行。所以你不应该同时使用两者。
改为:
$table->string('api_token')->unique();
和
You must set the api_token in seeder, not in migration.
我正在尝试使用 str_random(60)
和 unique()
函数在我的数据库中为用户的 api_token 生成一个字符串,但看起来我做错了。当我使用 db:seed
两个虚拟用户播种时,他们应该有不同的 api_token(s)。这是我的迁移文件
$table->increments('id');
$table->string('name');
$table->string('email');
$table->string('api_token')->default(str_random(60))->unique();
$table->string('password');
$table->string('remember_token')->nullable();
$table->timestamps();
如果我删除 unique()
功能,用户将拥有相同的 api_token,如果我放回 unique()
,我将出现错误,因为他们将拥有相同的 [=22] =].有人可以帮助我解决这个独特的 api_token 案例吗?
您不应将 default()
与 unique()
一起使用。因为 default()
是一个值,当此列中没有任何值时,它被设置为一行。所以你不应该同时使用两者。
改为:
$table->string('api_token')->unique();
和
You must set the api_token in seeder, not in migration.