Laravel 4 Fluent Query Builder上的列名冲突

时间:2013-08-12 00:30:27

标签: php laravel laravel-4

我有这样的查询:

$users = DB::table('users')->join('user_roles','users.role_id','=','user_roles.id')->get();

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

但问题是.. $user->id上返回的内容是user_roles.id而不是users.id列..我如何解决这个问题,以便我得到的不是角色ID,而不是用户ID ..

谢谢!

2 个答案:

答案 0 :(得分:15)

发现它!

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

以下是最终查询:

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

答案 1 :(得分: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.*'));