我是Laravel的新手,使用MariaDB 10.0.xx学习Laravel 5.2。
有几个表,但简而言之,'会员'可以有很多'组',我想显示会员的名字和姓氏,其成员已经加入同一行。
我没有任何明确的想法来实现这一点,但我想要做的是创建两个单独的查询($ memberLists和$ groupLists)并通过输入第一个查询($ memberLists)的主要来获取组列表第二个查询的键($ groupLists)。
或者如果您有更好的想法,请告诉我。
我希望显示如下
first Name / Last Name / Groups
john Doe A group, B group
Jane Taylor B group
Nick Kay A group, B group, C group
我的控制器
$memberLists = DB::table('Member')
->select('firstNm','lastNm')
->join('Center', 'Member.mbrCd', '=', 'Center.mbrCd')
->join('Org', 'Center.orgCd', '=', 'Org.orgCd');
$groupLists = DB::table('Group')
->select('groupNm')
->join('Center','Center.orgCd','=','Group.orgCd')
->join('GroupMember ','GroupMember.mbrCd','=','Center.mbrCd')
->where ('GroupMember.mbrCd',$Member_primaryKey_from_memberLists);
view return view('member.memberList')
->with('memberLists', $memberLists)
->with('groupLists',$groupLists);
这是我的观点
@extends('masterLayOut')
<table>
<thead>
<th> First Name </th>
<th> Last Name </th>
<th> Groups </th>
</thead>
<tbody>
@foreach ($memberLists as $memberList)
<tr>
<td> {{ memberList->firstNm}}</td>
<td> {{ memberList->lastNm }}</td>
<td> {{ groupLists->groupNm }} </td>
</tr>
@endforeach
</tbody>
<table>
答案 0 :(得分:0)
这就是为什么使用Eloquent模型而不是查询的好处。您可以通过急切加载解决这个问题。
在您的示例中,您首先要对所有内容进行分组(因为我不知道我们是否需要它,所以我将省略所有联接):
<强>控制器强>
//I'm selecting also member id (I don't know how you call it)
$memberLists = DB::table('Member')
->select('id', 'firstNm','lastNm')
->get();
$groupLists = DB::table('Group')
->select('groupNm', 'mbrCd')
->get();
$groups = [];
foreach($groupLists as $group) {
if (!isset($group[$group->mbrCd])) {
$group[$group->mbrCd] = [];
}
$group[$group->mbrCd][] = $group->groupNm;
}
return view('member.memberList')
->with('memberLists', $memberLists)
->with('groupLists', $groups);
然后在你看来:
@extends('masterLayOut')
<table>
<thead>
<th> First Name </th>
<th> Last Name </th>
<th> Groups </th>
</thead>
<tbody>
@foreach ($memberLists as $memberList)
<tr>
<td> {{ memberList->firstNm}}</td>
<td> {{ memberList->lastNm }}</td>
<td> {{ isset($groups[$memberList->id]) ? implode(', ', $groups[$memberList->id]) : '' }} </td>
</tr>
@foreach
</tbody>
<table>