我正在尝试使用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案吗?
答案 0 :(得分:3)
您不应将default()
与unique()
一起使用。因为default()
是在此列中没有放入任何值时设置为行的值。所以你不应该同时使用它们。
将其更改为:
$table->string('api_token')->unique();
和
您必须在播种机中设置api_token,而不是在迁移中。