【问题标题】:How do I get all the invoice items in my edit page in laravel?如何在 laravel 的编辑页面中获取所有发票项目?
【发布时间】:2020-05-08 22:46:54
【问题描述】:

**我是 laravel 新手,所以请忽略提问时的任何错误。我已经使用 jquery 创建了带有多行表的发票。现在我需要更新发票项目,那么如何在我的编辑页面中获取所有发票项目以便我可以更新它。 **

我的桌子 发票

  • 身份证
  • invoice_no
  • 小计
  • 折扣
  • 总计

invoice_items

  • 身份证
  • invoice_id
  • 价格
  • 数量
  • 金额

发票模型

public function invoice_items()
{
    return $this->hasMany('App\InvoiceItem', 'invoice_id', 'id');
}

InvoiceItem 模型

public function invoice()
{
    return $this->belongsTo('App\Invoice');
}

如果需要任何资源,请我提供。

public function edit($id)
    {
        $invoice = Invoice::find($id);
        $invoice_items = InvoiceItem::all();
        return view('invoices.edit', compact('invoice', 'invoice_items'));
    }

【问题讨论】:

  • 您是否尝试过文档中描述的方式?通过魔术方法:$invoice->invoice_items 或方法$invoice->invoice_items()->get()?记得用with处理n+1。
  • 你必须清楚什么是问题?您无法访问发票项目,或者您不知道如何在发送请求后访问数据以更新(在控制器中)?
  • 我已经添加了这些项目。现在在我的编辑页面中,我想从数据库中获取 id 1 的所有项目,如第二个图所示。我不知道该怎么做。
  • 我建议将查询更改为$invoice = Invoice::with('invoice_items')->find($id)。还要检查文档(Eloquent,Collection)。
  • 我的问题是如何进入刀片模板。

标签: php laravel


【解决方案1】:

这是我的控制器

public function edit($id)
    {
        $invoice = Invoice::where('id',$id)->with('invoice_items')->first();
        return view('invoices.edit', compact('invoice'));
    }

【讨论】:

    【解决方案2】:
    $invoice = Invoice::find($id); // Here you are getting the invoice of a certain ID
    $invoice_items = InvoiceItem::all(); // You are getting all the invoices here, not for the specified Invoice
    ...
    

    您应该像这样使用您在 Invoice Eloquent invoices_items 中提供的方法

    ...
    $invoices_items = $invoice->invoice_items;
    ...
    

    没有(),如果你写成(),后面必须跟get()一样

    $invoices_items = $invoice->invoice_items()->get();
    

    希望对你有帮助

    更新

    @Rezwan 提到了 ->with('invoice_items') 方法,该方法对性能很有好处,因为它在单个查询中加载带有发票的 invoices_item,而不是两个数据库查询

    【讨论】:

    • 感谢 Emad。我明白了。
    【解决方案3】:

    你可以试试这个

    $invoice = Invoice::where('id',$id)->with('invoice_items')->first();
    return redirect()->route('your blade route name',compact('invoice',$invoice)))
    

    你应该得到所有与发票相关的发票项目。

    【讨论】:

    • 谢谢 Rezwan。但我不知道如何在刀片的表格中检索所有发票项目。
    • 使用dd($invoice) 你会看到invoice_items 会给你一个invoice_items 集合的数组我认为下面的代码会帮助你{{ $invoice->invoice_items->invoice_items_id}}
    • 谢谢 Rezwen。我想我明白了。
    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2012-02-07
    相关资源
    最近更新 更多