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.