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
列包含角色名称,即(user/admin/editor)roles.name
users.name
、users.email
和角色。name
:
$users = DB::table('users')
->join('roles', 'users.role', '=', 'roles.id')
->select('users.name', 'users.email', 'roles.name')
->get();
实际上,它可以工作并转储数据,但问题是两个名称相似的colsusers.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'
,而且效果也不错