2013-08-12 32 views
5

Tôi có một câu hỏi như thế này:Cột Tên Xung đột trên Laravel 4 thạo Query Builder

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

và một bảng có một cột id (users.id) và một bảng có các cột iduser_id (user_roles .id & user_roles.user_id),

nhưng vấn đề là .. những gì đang được trở về $user->iduser_roles.id thay vì cột users.id .. làm thế nào để khắc phục điều này để những gì tôi nhận được không phải là vai trò id nhưng thay vào đó, id người dùng ..

cảm ơn!

Trả lời

15

Tìm thấy nó!

sử dụng ->select('users.*', 'user_roles.role_name') tôi đã có thể xóa user_roles.id khỏi giá trị trả về và do đó loại bỏ xung đột.

Dưới đây là truy vấn cuối cùng:

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

một sự thay thế mặc dù giải pháp nghèo là '-> chọn ('*', 'users.id') ' – cawecoy

6

Cách tốt hơn để làm điều này là sử dụng 'như':

$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.*')); 
+3

Một câu trả lời tốt hơn nhiều sau đó được chấp nhận! – larsemil