You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Eloquent:如何用Union合并同一张表的两列数据

用Laravel Eloquent Union合并两列为单列的实现方法

嘿,这个需求其实很好解决!因为Eloquent的union(或者unionAll)是用来合并两个查询结果集的,我们只需要把两列分别拆成两个独立的查询,再给它们统一列别名,就能合并成单列啦。

具体实现步骤

假设你的数据表对应的Eloquent模型是YourModel,列名分别是column1和column2,可以这么写:

// 先创建第一个查询:选取column1,并重命名为统一的别名
$column1Query = YourModel::select('column1 as combined_column');

// 再创建第二个查询:选取column2,同样用同一个别名,然后合并第一个查询
$combinedData = YourModel::select('column2 as combined_column')
    ->union($column1Query) // 如果需要保留重复值,改用 unionAll($column1Query)
    ->pluck('combined_column') // 提取单列数据
    ->toArray(); // 转成数组,方便查看或使用

代码解释

  • 统一列别名:union要求两个查询的列数、列类型和列名一致,所以我们把两列都重命名为combined_column,这样合并时不会报错。
  • Union vs UnionAll:默认的union会自动去重,如果你的数据里有重复值且需要保留,就用unionAll。
  • 提取单列:最后用pluck('combined_column')可以直接取出合并后的单列数据,转成数组后就是你想要的[1,2,3,4,5,6]格式啦。

可选:排序结果

如果需要对合并后的结果排序,只需要在链式调用里加上orderBy:

$combinedData = YourModel::select('column2 as combined_column')
    ->union($column1Query)
    ->orderBy('combined_column', 'asc') // 按升序排列,desc是降序
    ->pluck('combined_column')
    ->toArray();

内容的提问来源于stack exchange,提问作者clads clads

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:15:21