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_en
和 alpha_3_en
。然后您尝试在 foreach 循环中使用像 alpha_2
和 alpha_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',
] ......
我有这个迁移:
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_en
和 alpha_3_en
。然后您尝试在 foreach 循环中使用像 alpha_2
和 alpha_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',
] ......