加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 使用Eloquent在mysql中左连接后分别获取相同的命名列

发布时间:2020-12-13 16:59:19 所属栏目:PHP教程 来源:网络整理
导读:我有2个表,其中一个存储学生,另一个存储管理员 学生姓名, 最终管理者也有名字和姓氏. 我还在学生表中存储了added_by,以检查添加了学生的经理. 随着查询我连接表 $students = AppStudent::with('payment')-with('discontinuities') -leftJoin('managers','s
我有2个表,其中一个存储学生,另一个存储管理员

学生姓名,
最终管理者也有名字和姓氏.

我还在学生表中存储了added_by,以检查添加了学生的经理.

随着查询我连接表

$students = AppStudent::with('payment')->with('discontinuities')
                ->leftJoin('managers','students.added_by','=','managers.id')
                ->get();

让我们说学生是

Name Surname Added_by

Jon Doe 1

和经理是

id name surname

1 jane doe

所以当我用上面给出的查询加入这两个表时.我的学生变成了

Jane doe,因为这两个表中的名称冲突.
由于两个列的名称相同,因此管理员的名称会覆盖到学生的姓名.

我实际上只能在管理器表中加入一些列但是我需要这个名称列来打印带有管理器名称的added_by列
当然我可以将列名更改为表中的其他内容,但这样做太多了,因为我必须逐个重构我的应用程序中的每个查询,并从头开始测试所有内容

所以我的问题是如何加入这两个表并防止同名列上的冲突?

解决方法

试试这个:

$students = AppStudent::with('payment')->with('discontinuities')
    ->leftJoin('managers','managers.id')
    ->select('students.*','managers.name as m_name','managers.surname as m_s_name','managers.other_column_if_needed','managers.another_column_if_needed')
    ->get();

这样,您的经理表的名称列将被视为m_name,而姓氏列将被视为m_s_name

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读