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 连接多个表的主要内容,如果未能解决你的问题,请参考以下文章

laravel 具有多个迁移表的多个数据库

具有多个左连接和计数的错误计算(Laravel)

使用 eloquent laravel 获取连接表数据

连接查询以获取多个数据到 laravel 中的数据表

Laravel 连接 3 个表

如何指定Laravel用于迁移表的数据库连接?