【发布时间】:2019-01-03 21:38:32
【问题描述】:
在使用两个相关的表 users 和 roles 查看从数据库调用的数据时,我考虑了一个问题,它们具有以下结构:
-
users.role列包含一个整数,引用roles表的角色记录 -
roles.name列包含角色名称,即(用户/管理员/编辑)
在我的控制器中,我使用了 laravel docs 来构建我的查询,因为我需要在刀片中显示一个包含 users.name 、 users.email 和 roles.name 的表,这些表与架构中的用户相关:
$users = DB::table('users')
->join('roles', 'users.role', '=', 'roles.id')
->select('users.name', 'users.email', 'roles.name')
->get();
实际上它可以工作并转储数据,但问题是混淆了两个名称相似的 cols users.name 和 roles.name。它只转储roles.name 值,如下示例记录:
{"name":"user","email":"user@asd.com"},{"name":"user","email":"new@asd.com"},{"name":"user","email":"jaeden93@example.org"}
即使我尝试选择users 表的所有列,如下所示:
$users = DB::table('users')
->join('roles', 'users.role', '=', 'roles.id')
->select('users.*', 'roles.name')
->get();
users.name col 仍未显示!
有没有办法在不更改表格列标题的情况下解决此问题?
【问题讨论】:
-
->select('users.*', \DB::raw('roles.name as role_name'))是一个选项吗? -
有效!但你能在答案中解释更多吗?
标签: php laravel-5 eloquent laravel-5.4 laravel-blade