Laravel for每个未定义的数组键1



我试图使用db播种器更新所有数据的列,但我不断得到:未定义数组键1

我检查了foreach上的$key,它的值是0。

Application::chunk(500, function($applications) {
foreach($applications as $application){
$questions = $application->vacancy->questions()->pluck('id')->toArray();
if(!empty($questions)){       
foreach ($application->answers ?? [] as $key => $value) {
$value->update(
[
'vacancy_question_id' => $questions[$key]
]
);
}
}
}
});

应用程序和答案的关系

/**
* Get the answers for the application.
*
* @return IlluminateDatabaseEloquentRelationsHasMany
*/
public function answers()
{
return $this->hasMany(Answer::class);
}

$key在foreach的第一次迭代时只是0。然后是1,然后是2

当您调用dd($key);时,它显示0,然后停止脚本。所以你不会看到你的foreach的其他迭代。如果您希望脚本继续,使用dump($key);,您将看到$key0,然后是1

在某些情况下,它必须是不在$questions数组中的索引。

Application::chunk(500, function($applications) {
foreach($applications as $application){
$questions = $application->vacancy->questions()->pluck('id')->toArray();
if(!empty($questions)){       
foreach ($application->answers ?? [] as $key => $value) {
// These lines will help you identifiy the problem
if(!array_key_exists($key, $questions)){
dd($key.' missing from $questions!', $key, $questions);
}
$value->update(
[
'vacancy_question_id' => $questions[$key]
]
);
}
}
}
});

最新更新