如何更新 laravel 中的 master 和 detail 表单?
Posted
技术标签:
【中文标题】如何更新 laravel 中的 master 和 detail 表单?【英文标题】:How to update master and detail form in laravel? 【发布时间】:2022-01-01 02:31:12 【问题描述】:我在控制器中有这段代码来更新数据库中的数据:
public function update(Request $request, $id)
$anodizing = Anodizing::find($id);
$anodizing->date= $request->date;
$anodizing->number= $request->number;
$anodizing->item_total = $request->item_total;
$anodizing->desc= $request->desc;
if ($request->hasFile('picture'))
$anodizing_image = public_path("uploads/reports/anodizing/$anodizing->picture");
if (File::exists($anodizing_image))
File::delete($anodizing_image);
;
$file = $request->file('picture');
$extension = $file->getClientOriginalExtension();
$filename = $request->number. '-' . date('YmdHms') . '.' . $extension;
$file->move('uploads/reports/anodizing', $filename);
$anodizing->picture= $filename;
$anodizing->save();
$id = $anodizing->id;
foreach ($request->addmore as $key => $value)
$anodizingdetail = AnodizingDetail::find($value['id']);
$anodizingdetail->aluminium_id= $value['name'];
$anodizingdetail->qty = $value['qty'];
$anodizingdetail->weight= $value['weight'];
$anodizingdetail->save();
基本上这种更新方法可以完美地更新或编辑现有数据,但问题是,如果我想编辑然后在明细表单中插入新行该怎么办?
我知道 laravel 中的 updateorCreate 方法,这是正确的方法吗?怎么用?还是我需要使用其他东西?
【问题讨论】:
【参考方案1】:如你所说,不要使用AnodizingDetail::find
,而是使用findOrNew
文档:https://laravel.com/docs/master/eloquent-relationships#the-create-method
【讨论】:
谢谢,这条简单的线让我的更新功能起作用了。以上是关于如何更新 laravel 中的 master 和 detail 表单?的主要内容,如果未能解决你的问题,请参考以下文章