Laravel Eloquent - 查询连接表包含相同的列名
Laravel Eloquent - query joint tables contains a same col name
我在使用两个具有以下结构的相关 tables users
和 roles
查看从数据库调用的数据时考虑了一个问题:
users.role
列包含一个引用 roles
table 角色记录的整数
roles.name
列包含角色名称,即(用户/管理员/编辑)
在我的控制器中,我使用 laravel docs 来构建我的查询,因为我需要在 blade 中显示 table ,其中包含 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"}
即使我尝试 select users
table 的所有列,如下所示:
$users = DB::table('users')
->join('roles', 'users.role', '=', 'roles.id')
->select('users.*', 'roles.name')
->get();
users.name
col 仍然没有显示!
有没有办法在不更改 table 的列标题的情况下解决这个问题?
你可以给列起个别名,避免同名问题
使用这个
$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 ...
我在使用两个具有以下结构的相关 tables users
和 roles
查看从数据库调用的数据时考虑了一个问题:
users.role
列包含一个引用roles
table 角色记录的整数
roles.name
列包含角色名称,即(用户/管理员/编辑)
在我的控制器中,我使用 laravel docs 来构建我的查询,因为我需要在 blade 中显示 table ,其中包含 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"}
即使我尝试 select users
table 的所有列,如下所示:
$users = DB::table('users')
->join('roles', 'users.role', '=', 'roles.id')
->select('users.*', 'roles.name')
->get();
users.name
col 仍然没有显示!
有没有办法在不更改 table 的列标题的情况下解决这个问题?
你可以给列起个别名,避免同名问题
使用这个
$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 ...