Laravel 4 Fluent Query Builder上的列名冲突

rei*_*hin 5 php laravel laravel-4

我有这样的查询:

$users = DB::table('users')->join('user_roles','users.role_id','=','user_roles.id')->get();
Run Code Online (Sandbox Code Playgroud)

和具有列的表id(users.id)和具有列另一个表iduser_id(user_roles.id&user_roles.user_id),

但问题是..返回的$user->iduser_roles.id代替users.id列...如何修复此问题,以便我得到的不是角色ID而是用户ID而不是...

谢谢!

rei*_*hin 15

找到了!

使用->select('users.*', 'user_roles.role_name')i能够user_roles.id从返回的值中删除,从而消除冲突.

这是最后的查询:

$users = DB::table('users')->join('user_roles','users.role_id','=','user_roles.id')->select('users.*', 'user_roles.role_name')->get();
Run Code Online (Sandbox Code Playgroud)

  • 另一种选择,虽然糟糕的解决方案是` - > select('*','users.id')` (2认同)

Bug*_*Bug 6

更好的方法是使用'as':

$users = DB::table('users')->join('user_roles','users.role_id','=','user_roles.id')->get(array('users.*', '**user_roles.id as user_roles_id**', 'user_roles.*'));
Run Code Online (Sandbox Code Playgroud)

  • 一个更好的答案然后接受的一个! (3认同)