laravel - 在 laravel 5.8 中按另一个用户对用户进行分组
问题描述
我有这张桌子
我想对收藏家进行分组并展示他们的借款人。
收藏家会员模型
用户控制器
public function index(Request $request)
{
$collectorBorrowers = CollectorMember::with('collector','borrower','referral')->get();
return view('dashboard.users.index', compact('users','profile','collector'))
->with('collectorBorrowers',$collectorBorrowers);
}
在我的刀片
@foreach($collectorBorrowers as $cb)
<tr>
{{-- <td>{{ $loop->iteration }}</td> --}}
<td>{{ $cb->collector->name }}</td>
<td>{{ $cb->borrower }}</td>
<td>{{ $cb->referral->code }}</td>
</tr>
@endforeach
这是当前的输出
我怎样才能使输出像这样
Collector 1
- borrowerName 1 | referralcode
- borrowerName 2 | referralcode
Collector 2
- borrowerName 1 | referralcode
Collector 3
- borrowerName 1 | referralcode
- borrowerName 2 | referralcode
- borrowerName 3 | referralcode
问题更新 遵循 ROMAN BOBRIK 的回答
现在这是我的 CollectorMembersController 的样子,
public function index(Request $request)
{
$collectorBorrowers = CollectorMember::with('collector','borrower','referral')
->get()
->groupBy('name');
return view('dashboard.collector-members.index', compact('collectorBorrowers'));
}
通过在我的刀片上执行此操作
@foreach($collectorBorrowers as $item)
<tr>
<td>{{ $item }} ---</td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
@endforeach
这是输出
在我的模型上,我将 hasOne 更改为 belongsTo
public function collector()
{
return $this->belongsTo('App\User', 'collector_id','id');
}
public function borrower()
{
return $this->belongsTo('App\User', 'borrower_id','id');
}
public function referral()
{
return $this->belongsTo('App\Referral', 'referral_id','id');
}
我的问题仍然存在,我怎样才能使输出看起来像这样,
Collector 1
- borrowerName 1 | referralcode
- borrowerName 2 | referralcode
Collector 2
- borrowerName 1 | referralcode
Collector 3
- borrowerName 1 | referralcode
- borrowerName 2 | referralcode
- borrowerName 3 | referralcode
这是 dd($collectorBorrowers);
非常感谢您!
解决方案
我可能不完全理解您要做什么,但对我来说,您似乎可以使用更好的关系描述。而不是使用hasOne
我会使用belongsToMany
Laravel #Many To Many
CollectorMember
您可以将方法写入模型而不是User
模型,如下所示:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
public function collector()
{
return $this->belongsToMany('App\User', 'collector_members', 'borrower_id', 'collector_id');
}
public function borrower()
{
return $this->belongsToMany('App\User', 'collector_members', 'collector_id', 'borrower_id');
}
}
这样你就可以做这样的事情
$users = App\User::all();
foreach ($user as $users) {
foreach ($user->borrower as $borrower) {
// echo $borrower->name;
// echo $borrower->pivot->referral_id
}
}
要访问引荐,您可以使用 pivot 方法,该方法使您可以访问中间表collector_members
。
推荐阅读
- javascript - Angular i18n 动态文本
- c# - 如何在 ASP.NET Core MVC 中从 .docs.microsoft.com 获取“.TokenAuthCookies”cookie?
- javascript - 在 javascript 中使用哈希表搜索对象值
- java - SpringBoot @Scheduled 每两次执行之间的随机延迟
- node.js - 在 dialogflow webhook 中设置了响应,但它返回未设置响应
- reactjs - react-bootstrap-typeahead labelKey 打字稿
- javascript - 不同句子的随机组合
- python - 计算抵押贷款 - python 3.8.3
- c# - 如何在 C# 中使用 Imap 过滤来自特定发件人的电子邮件?
- javascript - 如何使用 setInterval 或 setTimeout 在 nodeJS/Javascript 中创建证书监视器/监视器