创建或更新行 Laravel
Create or update rows Laravel
我尝试使用请求的数据更新或创建 table,在更新时它有效,但在创建时我只能为 1 做。因此,如果我有 4 个新项目,则只保存 1 个,不知道为什么,也没有错误。如果我转储请求,我将拥有所有值。
$answers = new LkpAnswer;
foreach ($request->items as $key => $item) {
if (isset($item['id'])) {
$answers->where('id', $item['id'])->update($item);
} else {
$answers->fill($item)->save();
}
}
请尝试以下代码:
foreach ($request->items as $key => $item) {
if (isset($item['id'])) {
LkpAnswer::where('id', $item['id'])->update($item);
} else {
$answers = new LkpAnswer; //new up an empty model(object) then fill it with your array of data, and finally save it.
$answers->fill($item)->save();
}
}
这应该可以通过内置方法巧妙地实现:
foreach ($request->items as $item) {
LkpAnswer::updateOrCreate($item['id'],$item);
}
确保相关字段可填写 - 请参阅 mass assignment protection。
我尝试使用请求的数据更新或创建 table,在更新时它有效,但在创建时我只能为 1 做。因此,如果我有 4 个新项目,则只保存 1 个,不知道为什么,也没有错误。如果我转储请求,我将拥有所有值。
$answers = new LkpAnswer;
foreach ($request->items as $key => $item) {
if (isset($item['id'])) {
$answers->where('id', $item['id'])->update($item);
} else {
$answers->fill($item)->save();
}
}
请尝试以下代码:
foreach ($request->items as $key => $item) {
if (isset($item['id'])) {
LkpAnswer::where('id', $item['id'])->update($item);
} else {
$answers = new LkpAnswer; //new up an empty model(object) then fill it with your array of data, and finally save it.
$answers->fill($item)->save();
}
}
这应该可以通过内置方法巧妙地实现:
foreach ($request->items as $item) {
LkpAnswer::updateOrCreate($item['id'],$item);
}
确保相关字段可填写 - 请参阅 mass assignment protection。