如何使用 Laravel Eloquent 和 Laravel Query Builder 进行联合查询?
Posted
技术标签:
【中文标题】如何使用 Laravel Eloquent 和 Laravel Query Builder 进行联合查询?【英文标题】:How to make a union query using Laravel Eloquent and Laravel Query Builder? 【发布时间】:2020-02-20 11:56:28 【问题描述】:我正在使用 laravel eloquent 来处理 CRUD 数据。 我的问题是,我不知道如何使用 laravel Eloquent ORM 进行 UNION 查询。 你能帮我解决我的问题吗?
这是我想在 laravel Eloquent 或 Query Builder 中实现的示例查询
SELECT in_records.item_id,
in_records.date,
in_records.value AS 'IN',
'' AS 'OUT',
in_records.USER
FROM in_records
UNION
SELECT out_records.item_id,
out_records.date,
'' AS 'IN',
out_records.value AS 'OUT',
out_records.USER
FROM out_records
ORDER BY date
【问题讨论】:
【参考方案1】:$first= DB::table("in_records")
->select(" in_records.item_id,
in_records.date,
in_records.value AS 'IN',
'' AS 'OUT',
in_records.user");
$final= DB::table("out_records")
->select(" out_records.item_id,
out_records.date,
'' AS 'IN',
out_records.value AS 'OUT',
out_records.user")
->union($first)
->get();
或者你可以像这样合并结果:
$a = Table::where('column','value')->get();
$b = Album::where('column','value')->get();
$result = $a->merge($b);
【讨论】:
谢谢@Danyal Sandeelo,.. 我在->select()
的参数处添加了DB::RAW()
查询生成器,以便我可以添加空格列。前任。 ->select( DB::raw(" item_id, date, items.description as 'item', users.name as 'user', '' as 'ADD', in_records.value as 'IN', '' as 'OUT', '' as 'BONES', '' as 'SCRAPS' "))
以上是关于如何使用 Laravel Eloquent 和 Laravel Query Builder 进行联合查询?的主要内容,如果未能解决你的问题,请参考以下文章