首页 > 解决方案 > Laravel 在发票列表中显示客户名称

问题描述

我有两个表:“客户”和“发票”。客户端模型有很多发票,而发票模型属于一个客户端,实际上是一对多的关系,没什么特别的。

在客户资料页面上,我显示了他的发票:

客户端控制器.php

public function show($id) {

    $client = Client::findOrFail($id);

    $invoices = Client::find($id)->invoices;

    return view('clients/profile', compact('clients', 'invoices'));

}

在视图中,我有一个显示所有发票数据的循环。一切都好!我的问题在发票页面上。发票页面有一个范围:显示所有客户的所有发票,但在发票列表中显示客户名称。这就是我的想法,因为我不知道如何从“客户”表中选择名称客户。在发票表中,我有一行“client_id”。目前我有这个代码: InvoiceController

public function index() {

    $invoices = Invoice::all();
    $clients = Client::all();

    return view('invoices/list', compact('invoices', 'clients'));

}

list.blade.php

@foreach ($invoices as $invoice)
     {{ $invoice->number }}
     @foreach ($clients as $client)
          {{ $client->name }}??????????????
     @endforeach
     {{ $invoice->amount }}
@endforeach

$client->name 上没有显示任何内容。我不知道如何获取他发票上的每个客户姓名,因为我需要根据“发票”表中的“client_id”显示“客户”表中的客户姓名。也许我可以用 Eloquent 做到这一点......?!?

标签: phplaravel

解决方案


那么,一张发票只有一个客户,

在发票模型中设置client()关系,然后与客户端获取发票

$invoices = Invoice::with('client')->all();

之后在你的刀片文件中

@foreach ($invoices as $invoice)
     {{ $invoice->number }}
     {{ $invoice->client->name }}
     {{ $invoice->amount }}
@endforeach

推荐阅读