Laravel 连接多个表
Posted
技术标签:
【中文标题】Laravel 连接多个表【英文标题】:Laravel joining multiple tables 【发布时间】:2018-07-03 15:29:10 【问题描述】:我有3个mysql表
**Clients**
id | name
**Services**
id | name | foreign key -> client_id
**Payments**
id | payment_date | amount | foreign key -> service_id
ClientController.php
$sumPayments = Payment::join('services', 'payments.service_id', '=', 'services.id')
->join('clients', 'clients.id', '=', 'services.client_id')->get();
客户端/index.blade.php
@foreach($clients as $client)
<tr>
@foreach($service->payments as $payment)
@if($payment->service_id == $service->id)
<td>$sumPayments->where('service_id', '$services->id')->sum('payment_amount')</td>
@break
@endif
@endforeach
</tr>
@endforeach
我的模型中有“belongsTo”和“hasMany”。 我尝试显示每个客户已支付的总金额。请帮忙。
【问题讨论】:
【参考方案1】:使用withCount()
方法:
Client::withCount('payments')->get();
如果您想在不实际加载关系的情况下计算关系结果的数量,您可以使用
withCount
方法,该方法将在结果模型上放置一个relation_count
列。
因此,此代码将为每个客户端创建一个新的 payments_count
属性:
@foreach ($clients as $client)
$client->payments_count
@endforeach
【讨论】:
以上是关于Laravel 连接多个表的主要内容,如果未能解决你的问题,请参考以下文章