ErrorException数组到迁移时的字符串转换--seed

时间:2015-07-16 23:38:18

标签: php laravel-5 database-migration faker artisan-migrate

我正在尝试设置我的第一个laravel项目但是当我尝试让工匠用faker播种数据库时它会抛出

  

[errorException]数组到字符串转换

我正在使用股票用户迁移文件 并使用命令php artisan migrate --seed

非常感谢任何指导

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
/**
 * Run the migrations.
 *
 * @return void
 */
public function up()
{
    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->string('password', 60);
        $table->string('role', array('user', 'admin', 'superuser'));
        $table->rememberToken();
        $table->timestamps();
    });
}

/**
 * Reverse the migrations.
 *
 * @return void
 */
public function down()
{
    Schema::drop('users');
}
}

和artisan为我生成的这个UserTableSeeder

use Illuminate\Database\Seeder;

class UserTableSeeder extends Seeder
{
/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{
    factory(App\User::class, 49)->create();
    factory(App\User::class)->create([
        'name' => 'admin',
        'role' => 'admin',
    ]);
}
}

这是我的Modelfactory.php

$factory->define(App\User::class, function ($faker) {
return [
    'name' => $faker->name,
    'email' => $faker->email,
    'password' => str_random(10),
    'remember_token' => str_random(10),
    'role' => $faker->word->randomElement(array('user','superuser')),
];
});

3 个答案:

答案 0 :(得分:5)

$table->string('role', array('user', 'admin', 'superuser'));

您正在选择一种字符串,然后提供一个数组。

这正是你的错误所说的。

答案 1 :(得分:3)

您的错误是因为这行

$table->string('role', array('user', 'admin', 'superuser'));

字符串更改为枚举;例如:

$table->enum('role', array('user', 'admin', 'superuser'));

这将执行。

答案 2 :(得分:1)

您说的是字符串,但在此行提供了一个数组:

 $table->string('role', array('user', 'admin', 'superuser'));

您应该使用:

$table->enum('role', ['user', 'admin', 'superuser']);

供参考,请参见此处:

https://laravel.com/docs/5.8/migrations#creating-columns