laravel 播种 returns 未定义索引

laravel seeding returns undefined index

我有这个迁移:

public function up()
{
    Schema::create('countries', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name_en')->default('');
        $table->string('name_de')->default('');
        $table->string('alpha_2')->default('');
        $table->string('alpha_3')->default('');
    });
}

和这个播种机

$countries = [
            0 => [
                "name_en" => 'Afghanistan',
                "name_de" => 'Afghanistan',
                "alpha_2" => 'af',
                "alpha_3" => 'afg'
            ],
            1 => [
                "name_en" => 'Albania',
                "name_de" => 'Albanien',
                "alpha_2_en" => 'al',
                "alpha_3_en" => 'alb',
            ],
            2 => [
                "name_en" => 'Algeria',
                "name_de" => 'Algerien',
                "alpha_2_en" => 'dz',
                "alpha_3_en" => 'dza',
            ] ......

然后生病 运行 就像:

foreach ($countries as $arr) {

            DB::table('countries')->insert([
                'name_en' => $arr['name_en'],
                'name_de' => $arr['name_de'],
                'alpha_2' => $arr['alpha_2'],
                'alpha_3' => $arr['alpha_3']
            ]);
        }

奇怪的是,它确实在第一行阿富汗播种了所有条目,但是 returns 一个错误说 "Undefined index: alpha_2" 我不知道为什么,如果我删除 alpha_2 和 alpha_3 它有效,我什至尝试更改名称,因为也许 alpha 是一个受限制的词,直到现在才运气好。 知道为什么吗? :/

这是因为您在 countries 数组的第二个和第三个元素中有索引名称 alpha_2_enalpha_3_en。然后您尝试在 foreach 循环中使用像 alpha_2alpha_3 这样的索引。这就是导致错误的原因。更新您的 countries 数组。

$countries = [
            0 => [
                "name_en" => 'Afghanistan',
                "name_de" => 'Afghanistan',
                "alpha_2" => 'af',
                "alpha_3" => 'afg'
            ],
            1 => [
                "name_en" => 'Albania',
                "name_de" => 'Albanien',
                "alpha_2" => 'al',
                "alpha_3" => 'alb',
            ],
            2 => [
                "name_en" => 'Algeria',
                "name_de" => 'Algerien',
                "alpha_2" => 'dz',
                "alpha_3" => 'dza',
            ] ......