Laravel-str_random()无法为api_token生成唯一的随机字符串

时间:2018-04-19 04:50:20

标签: php laravel artisan

我正在尝试使用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(),我将会出错,因为它们将具有相同的api_token。有人可以帮我解决这个独特的api_token案吗?

1 个答案:

答案 0 :(得分:3)

您不应将default()unique()一起使用。因为default()是在此列中没有放入任何值时设置为行的值。所以你不应该同时使用它们。

将其更改为:

$table->string('api_token')->unique();

  

您必须在播种机中设置api_token,而不是在迁移中。