【问题标题】:How to update master and detail form in laravel?如何更新 laravel 中的 master 和 detail 表单?
【发布时间】: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 方法,这是正确的方法吗?怎么用?还是我需要使用其他东西?

【问题讨论】:

    标签: php laravel eloquent laravel-blade


    【解决方案1】:

    如你所说,不要使用AnodizingDetail::find,而是使用findOrNew

    文档:https://laravel.com/docs/master/eloquent-relationships#the-create-method

    【讨论】:

    • 谢谢,这条简单的线让我的更新功能起作用了。
    猜你喜欢
    • 1970-01-01
    • 2012-10-31
    • 2011-08-08
    • 2013-01-07
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    相关资源
    最近更新 更多