如何在QueryBuilder中使用AS?

时间:2016-05-19 17:05:18

标签: laravel laravel-5 eloquent laravel-5.2

如何在以下连接语句中使用\\\\ |||˪--- 1) the final backslash ||˪---- 3) the backslash needed to escape 1) in a string literal |˪----- 2) the backslash needed to escape 1) in a regex literal ˪------ 3) the backslash needed to escape 2) in a string literal

AS

正如已经提到的,问题是,User::join('role_user', 'id', '=', 'user_id') ->join('roles', 'role_id', '=', 'roles.id') ->where('roles.name', 'teacher') ->get('roles.name AS roleName') // <-- invalid AS usage just for demonstration 会覆盖 user.name。如何修改上述查询,以便role.name 重命名role.name并保留在结果中?

2 个答案:

答案 0 :(得分:0)

使用AS声明中的select(...)可以解决问题:

User::join('role_user', 'id', '=', 'user_id')
        ->join('roles', 'role_id', '=', 'roles.id')
        ->where('roles.name', 'teacher')
        ->select('*', 'roles.name AS roleName') // <--
        ->get()

如上所述,查询中的关键部分是select语句:

// select all of the columns while renaming 'roles.name' one
...->select('*', 'roles.name AS roleName') 

答案 1 :(得分:0)

将其合并到select语句

User::select('roles.name AS roleName')
        ->join('role_user', 'id', '=', 'user_id')
        ->join('roles', 'role_id', '=', 'roles.id')
        ->where('roles.name', 'teacher')
        ->get();
相关问题