Laravel Controller SQL:连接两个表使输出相乘

Posted

技术标签:

【中文标题】Laravel Controller SQL:连接两个表使输出相乘【英文标题】:Laravel Controller SQL: joining two tables multiplies the output 【发布时间】:2021-09-19 05:02:16 【问题描述】:

快速总结一下,我的第一个表的行数乘以第二个表中的行数,这可能是由于我的加入:

表 1:(bbr_group) 我只有两行

1

表2:(bbr_group_type)我只需要得到group_type_name,加入group_type_id

2

控制器:

public function fetchgroup()
    $all_groups = HmsBbrGroup::join('hms_bbr_group_type', 'hms_bbr_group.group_type_id', '=', 'hms_bbr_group.group_type_id')
                               ->orderBy('group_id', 'ASC')->get();
    return response()->json([
        'all_groups'=>$all_groups,
    ]);

表格:(使用 ajax)

                success: function (response)
                    var tbody="";
                    $.each(response.all_groups, function (key, group) 
                    tbody+=`
                        <tr>
                            <td><p class="font-weight-bold mb-0">$group.group_name</p>$group.group_description</td>
                            <td><p>$group.group_type_name</p></td>
                            <td><p>users here</p></td>
                            <td><p>status here</p></td>
                            <td>
                                <button type="button" value="$group.group_id" class="edit_group btn btn-outline-secondary"><i class="fas fa-edit"></i> Edit</button>
                                <button type="button" value="$group.group_id" class="delete_group btn btn-outline-secondary"><i class="fas fa-trash"></i> Delete</button>
                            </td>
                        </tr>`;
                    );
                    
                    $('#main-group-list tbody').html(tbody)
                

这是我输出的情况:正如您所见,即使只有两行,它也会显示第二个表中每个组名的行

3

我需要用左连接group_type_name 显示hms_bbr_group 中只有两行的表格。在这种情况下,两者都是“通用”

我不确定控制器或表中的连接是否是重复的原因。如果这条线是正确的,我想要一些反馈:

$all_groups = HmsBbrGroup::join('hms_bbr_group_type', 'hms_bbr_group.group_type_id', '=', 'hms_bbr_group.group_type_id')

任何帮助都会很棒。谢谢

【问题讨论】:

【参考方案1】:

您的加入条件有误。您在相等的两侧使用hms_bbr_group 表。我认为这将如下所示:

$all_groups = HmsBbrGroup::join('hms_bbr_group_type', 'hms_bbr_group.group_type_id', '=', 'hms_bbr_group_type.group_type_id')
                          ->orderBy('group_id', 'ASC')->get();

【讨论】:

这是我的错,我只是忽略了这一点。现在一切似乎都很好,谢谢

以上是关于Laravel Controller SQL:连接两个表使输出相乘的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:连接错误PDO

Laravel中的SQL连接,如何?

连接表时 Laravel 4 SQL 错误

如何使用 Laravel 4 Eloquent 连接列?

laravel怎么在连接查询中执行sql语句

如何在 laravel 中备份/导出连接的数据库 database.sql 文件?