Как получить все элементы счета на странице редактирования в laravel? - PullRequest
2 голосов
/ 22 января 2020

** Я новичок в laravel, поэтому игнорируйте любые ошибки при задании вопроса. Я создал счет с таблицей из нескольких строк, используя jquery. Теперь мне нужно обновить элементы счета-фактуры, так как мне получить все элементы счета-фактуры на моей странице редактирования, чтобы я мог обновить их. **

Мои таблицы счета

  • id
  • invoice_no
  • промежуточный итог
  • скидка
  • всего

invoice_items

  • id
  • 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'));
    }

Ответы [ 3 ]

2 голосов
/ 22 января 2020

Вы можете попробовать это

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

Вы должны получить все элементы счета, относящиеся к счету.

1 голос
/ 22 января 2020
$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
...

Вы должны использовать метод, который вы указали в Eloquent Invoice invoices_items, например,

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

без (), если вы пишете его как (), он должен следовать с get(), так что это будет похоже на

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

Надеюсь, это поможет

Обновление

@ Резван упомянул метод ->with('invoice_items'), который хорош для производительности при загрузке invoices_item со счетом-фактурой в одном запросе вместо двух запросов к базе данных

0 голосов
/ 22 января 2020

Это мой контроллер

public function edit($id)
    {
        $invoice = Invoice::where('id',$id)->with('invoice_items')->first();
        return view('invoices.edit', compact('invoice'));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...