我有一个名为,group的表和另一个名为member的表。组具有groupid、name等字段。。。成员具有memberid、groupid、membername等字段。。。其中groupid是组表的外键。我想在一条语句中查询这两个表,结果输出如下。
[
{
"groupId": "8",
"name": "Test Group 2",
"status": "0",
"member": [
{
"memberId": "1",
"groupId": "8",
"memberName": "tester 1"
}
]
}
]
我已经研究了内部连接和联合,但不知道如何实现这一点。任何建议都会有帮助。谢谢您。
3条答案
按热度按时间zbdgwd5y1#
您可以使用2个查询、数组列和数组Map来完成。
首先查询,获取所有需要的组,并将其提取到一个变量中,例如
$groups
```SELECT group_id, name, status FROM groups
$groupIds = implode(',', array_column($groups, 'group_id'));
"SELECT member_id, group_id, member_name FROM member WHERE group_id IN (" . $groupIds . ")"
foreach ($groups as $key => $group) {
$groupMember = array_filter($members, function($member) use ($group) {
return $group['group_id'] == $member['group_id'];
});
$group['member'] = $groupMember; // I don't know if this works
$groups[$key] = $groupMember; // if previous line doesn't work
}
Group::with("member")->get();
cwxwcias2#
你的问题很广泛,但也许这对你有帮助
未测试,但这将从带有
INNER JOIN
您也可以选择其他列,但请确保它们的名称不同。否则选择将失败(你可以通过使用as
关键字(此处提及)vkc1a9a23#
你可以使用连接
但结果是
主行和明细行之间每个连接的行
sql查询返回表格结果而不是嵌套结果