【问题标题】:ErrorException array to string conversion on migrate --seed迁移时 ErrorException 数组到字符串的转换 --seed
【发布时间】:2015-10-06 14:41:17
【问题描述】:

我正在尝试设置我的第一个 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');
}
}

还有这个工匠为我生成的 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')),
];
});

【问题讨论】:

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


    【解决方案1】:

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

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

    这正是你的错误所说的。

    【讨论】:

    • 我真的检查了一切,除非那个,谢谢。
    • 如果你想使用像 $table->string('role', array('user', 'admin', 'superuser')) 然后使用枚举 insted 字符串。你没有在字符串类型中使用
    【解决方案2】:

    你的错误是因为这一行

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

    字符串改为枚举;例如:

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

    这将执行。

    【讨论】:

      【解决方案3】:

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

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

      你应该使用:

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

      参考这里:

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

      【讨论】:

        猜你喜欢
        • 2020-09-10
        • 2018-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-05
        • 1970-01-01
        • 1970-01-01
        • 2021-06-28
        相关资源
        最近更新 更多