Php Laravel Eloquent-查询联合表包含相同的列名称

Php Laravel Eloquent-查询联合表包含相同的列名称,php,laravel-5,eloquent,laravel-5.4,laravel-blade,Php,Laravel 5,Eloquent,Laravel 5.4,Laravel Blade,在使用两个相关的表users和roles查看从数据库调用的数据时,我考虑了一个问题,这两个表具有以下结构: users.role列包含一个整数,该整数引用roles表的角色记录 roles.name列包含角色名称,即(user/admin/editor) 在我的控制器中,我使用构建我的查询,因为我需要在blade中显示一个表,其中包含通过架构与用户相关的users.name、users.email和角色。name: $users = DB::table('users') -

在使用两个相关的表
users
roles
查看从数据库调用的数据时,我考虑了一个问题,这两个表具有以下结构:

  • users.role
    列包含一个整数,该整数引用
    roles
    表的角色记录
  • roles.name
    列包含角色名称,即(user/admin/editor)
在我的控制器中,我使用构建我的查询,因为我需要在blade中显示一个表,其中包含通过架构与用户相关的
users.name
users.email
角色。name

$users = DB::table('users')
        ->join('roles', 'users.role', '=', 'roles.id')
        ->select('users.name', 'users.email', 'roles.name')
        ->get();
实际上,它可以工作并转储数据,但问题是两个名称相似的cols
users.name
roles.name
混淆了。它只转储
角色。name
值如下示例记录:

{"name":"user","email":"user@asd.com"},{"name":"user","email":"new@asd.com"},{"name":"user","email":"jaeden93@example.org"}
即使我试图选择
用户的所有列,如下表所示:

$users = DB::table('users')
        ->join('roles', 'users.role', '=', 'roles.id')
        ->select('users.*', 'roles.name')
        ->get();
users.name
col仍不显示


是否有办法在不更改表的列标题的情况下解决此问题?

您可以为列指定别名,以避免出现同名问题

用这个

$users = DB::table('users')
    ->join('roles', 'users.role', '=', 'roles.id')
    ->select('users.*', \DB::raw('roles.name as role_name'))
    ->get();
在SQL中执行此操作也是一样的

SELECT users.*, roles.name as role_name FROM ...

->select('users.*',\DB::raw('roles.name as role\u name'))
是一个选项吗?它可以工作!但是你能在回答中解释一下吗?我试着美化代码,而不是键入
DB::raw('roles.name as role\u name')
我只键入了
'roles.name as role\u name'
,而且效果也不错