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

标签 php mysql laravel join eloquent

我有 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_namesurname 列将被视为m_s_name

关于php - 使用 Eloquent 在 mysql 中左连接后分别获取相同的命名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34991476/

相关文章:

php - 在 laravel blade 中查找 foreach 循环的最后一次迭代

php - Mysql ASC 函数 ORDER only first ID's

php - Doctrine DQL - 选择添加为新记录的列别名

php - Laravel 5.4 事务和一对多关系

php - Magento - 如何使用从自定义 MySQL 表获取数据的网格表创建 Adminhtml 页面

laravel - 方法 Illuminate\Auth\RequestGuard::logout 不存在 Laravel Passport

laravel - php redis 和 laravel 中的 redis 有什么区别?

php - MYSQL 即使我在 php.ini 中定义,连接也超时

mysql - SQL IS NOT NULL 不工作

Mysql-如何根据四分之一列将行更改为列