Laravel Eloquent 示例
$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');
MySQL查詢我想使用Laravel重現
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');Just 會覆寫從左連接聯合中進行的選擇。
PS我簡化了我的真實案例查詢(洗掉了分組依據和特殊連接條件等)到該示例可能對真實案例使用沒有意義的地步,但演示仍然顯示了問題 - 需要在聯合之外有一個選擇陳述句范圍。
uj5u.com熱心網友回復:
你應該試試這個。
$outSideQuery = DB::raw("({$unionedQuery->toSql()}) as smth")->select('name');
uj5u.com熱心網友回復:
要向查詢添加新的選擇列,您可以使用addSelect方法:
$query->addSelect('name');
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349319.html
上一篇:查看Json請求
