我有 2 个表,其中一个存储学生,另一个存储经理
学生有姓氏, 最终管理者也有名字和姓氏。
我还在学生表中存储了 added_by 以检查哪个经理添加了学生。
通过查询我连接表
$students = \App\Student::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
因此,当我将这 2 个表与上面给出的查询连接起来时。我的学生变成了
Jane doe 因为这 2 个表中的名称冲突。
由于两列名称相同,因此经理的姓名将简单地覆盖为学生的姓名。
我实际上只能加入 managers 表中的一些列,但是我需要这个名称列来打印出带有经理名称的 added_by 列 当然,我可以将列名更改为表中的其他名称,但这工作量太大,因为我必须一个接一个地重构应用程序中的每个查询,并从头开始测试所有内容
所以我的问题是如何连接这 2 个表并防止同名列发生冲突?
最佳答案
尝试使用这个:
$students = \App\Student::with('payment')->with('discontinuities')
->leftJoin('managers','students.added_by','=','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();
这样你的 managers
表的 name
列将被视为 m_name
而 surname
列将被视为m_s_name
关于php - 使用 Eloquent 在 mysql 中左连接后分别获取相同的命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34991476/