如果还没有满足以下条件的行,我正在尝试创建一个新行:
['employee_id' => $id, 'competence_id' => $getCompetenceKey]
或者如果它已经存在,我更新它并设置 ['value' => $getCompetenceValue]
所以我这样做了:
foreach($request->input('competence') as $getCompetenceKey => $getCompetenceValue) {
EmployeeCompetence::updateOrCreate(
['employee_id' => $id,'competence_id' => $getCompetenceKey],
['value' => $getCompetenceValue]
);
}
但它似乎不能正常工作:
https://i.imgur.com/CNPZ2AB.png
不过我可以这样做:
foreach ($request->input('competence') as $getCompetenceKey => $getCompetenceValue) {
$e = EmployeeCompetence::where('employee_id', $id)->where('competence_id', $getCompetenceKey);
if ($e->count() > 0) {
$e->update(['value' => $getCompetenceValue]);
} else {
EmployeeCompetence::create(['employee_id' => $id,
'competence_id' => $getCompetenceKey,
'value' => $getCompetenceValue]);
}
}
但我真的很想知道为什么 updateOrCreate() 函数对我不起作用。
谢谢,
肯尼
最佳答案
第一列用于更新,但也应该在创建函数中传递。
例子:
EmployeeCompetence::updateOrCreate(
[
'employee_id' => $id,
'competence_id' => $getCompetenceKey
],
[
'value' => $getCompetenceValue,
'employee_id' => $id,
'competence_id' => $getCompetenceKey
]
);
关于php - updateOrCreate 数组中的多个属性( Eloquent ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46948069/