Laravel雄辩的例子
$union = User::select([
DB::raw("id"),
DB::raw("name")
])
->rightJoin("roles as t2", function ($join) {
$join->on("users.role_id", '=', "t2.id");
});
$query = User::select(
[
DB::raw("id"),
DB::raw("name")
]
)
->leftJoin('roles', function ($join){
$join->on("users.role_id", '=', "roles.id");
})
->union($union);
$query->select('name');我想使用Laravel重现MySQL查询
select name from
((select id, name
from `users`
left join `roles` on `users`.`role_id` = `roles`.`id`)
union
(select id, name
from `users`
right join `roles` as `t2` on `users`.`role_id` = `t2`.`id`)
) as smth;但是使用$query->select('name');只会覆盖select from left join联合。
附注:我简化了我的真实案例查询(删除了group by和特殊的连接条件等),但示例对于真实案例的使用可能没有意义,但演示仍然显示了问题-需要在联合作用域之外使用select语句。
发布于 2021-11-05 11:54:54
你应该试试这个。
$outSideQuery = DB::raw("({$unionedQuery->toSql()}) as smth")->select('name');发布于 2021-11-05 12:06:00
要向查询中添加新的选择列,可以使用addSelect方法:
$query->addSelect('name');https://stackoverflow.com/questions/69852801
复制相似问题