Php Laravel 5.2我如何显示同一行中有他/她的组的成员列表(一对多(或多对多)数据显示)

Php Laravel 5.2我如何显示同一行中有他/她的组的成员列表(一对多(或多对多)数据显示),php,mysql,laravel,laravel-5,laravel-5.2,Php,Mysql,Laravel,Laravel 5,Laravel 5.2,我刚接触Laravel,并通过MariaDB 10.0.xx学习Laravel 5.2 有几个表,但简而言之,“Member”可以有许多“Group”,我想显示成员的名字和姓氏,以及成员已加入同一行的组的名称 我没有任何明确的想法来实现这一点,但我正在尝试创建两个单独的查询($MemberList和$GroupList),并通过将第一个查询($MemberList)的主键输入到第二个查询($GroupList)来获取组列表 或者如果你有更好的主意,请告诉我 我希望显示如下 first Name

我刚接触Laravel,并通过MariaDB 10.0.xx学习Laravel 5.2

有几个表,但简而言之,“Member”可以有许多“Group”,我想显示成员的名字和姓氏,以及成员已加入同一行的组的名称

我没有任何明确的想法来实现这一点,但我正在尝试创建两个单独的查询($MemberList和$GroupList),并通过将第一个查询($MemberList)的主键输入到第二个查询($GroupList)来获取组列表

或者如果你有更好的主意,请告诉我

我希望显示如下

first Name / Last Name / Groups
john            Doe         A group, B group
Jane            Taylor      B group
Nick            Kay         A group, B group, C group
@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>
我的控制器

$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);
//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);
这是我的观点

first Name / Last Name / Groups
john            Doe         A group, B group
Jane            Taylor      B group
Nick            Kay         A group, B group, C group
@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>
@extends('masterLayOut'))
名字
姓
组
@foreach($memberList为$memberList)
{{memberList->firstNm}
{{memberList->lastNm}
{{grouplist->groupNm}
@endforeach

这就是为什么使用雄辩的模型而不是查询是好的例子。您可以通过快速加载在这些行中解决此问题

在您的示例中,您将首先对所有内容进行分组(我将省略所有连接,因为我不知道这里是否需要它):

控制器

$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);
//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>
@extends('masterLayOut'))
名字
姓
组
@foreach($memberList为$memberList)
{{memberList->firstNm}
{{memberList->lastNm}
{{isset($groups[$memberList->id])?内爆(',',$groups[$memberList->id]):''}
@弗雷奇

这看起来不对。您假设
$memberList->id
也是
$groups
数组的索引,它永远不会是。它看起来不像是成员和组之间的一对多关系。似乎成员(带有mbrCd)只有一个组。请让我知道你的意见。