Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Column Name Conflict on Laravel 4 Fluent Query Builder

I have a query like this:

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

and a table that has a column id (users.id) and another table that has columns id and user_id (user_roles.id & user_roles.user_id),

but the problem is.. what is being returned on $user->id is the user_roles.id instead of the users.id column.. how do i fix this so that what i get is not the role id but the user id instead..

thanks!

like image 473
reikyoushin Avatar asked Aug 12 '13 00:08

reikyoushin


2 Answers

Found it!

using ->select('users.*', 'user_roles.role_name') i was able to remove user_roles.id from the returned values and thus eliminating the conflict.

Here is the final query:

$users = DB::table('users')->join('user_roles','users.role_id','=','user_roles.id')->select('users.*', 'user_roles.role_name')->get();
like image 112
reikyoushin Avatar answered Oct 20 '22 01:10

reikyoushin


The better way to do this is using '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.*'));
like image 38
Bug Avatar answered Oct 20 '22 01:10

Bug