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

Ana*_*mov 4 php mysql join laravel eloquent

我有两张桌子,一张是学生,一张是经理

学生有名字的姓,最终管理人员的名字姓氏了。

我还在学生表中存储了added_by以检查哪个经理添加了学生。

通过查询我加入表

   $students = \App\Student::with('payment')->with('discontinuities')
                ->leftJoin('managers','students.added_by','=','managers.id')
                ->get();
Run Code Online (Sandbox Code Playgroud)

让我们说学生是

姓名 姓 添加_by

乔恩·多伊 1

经理是

身份证姓名姓氏

1 简母

因此,当我将这 2 个表与上面给出的查询连接起来时。我的学生变成

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

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

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

sma*_*hat 5

尝试使用这个:

$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();
Run Code Online (Sandbox Code Playgroud)

这样你的managers表的name列将被视为m_namesurname列将被视为m_s_name