SQL 查询 laravel 语法

SQL query laravel syntax

如何查询:

SELECT *, due1 as newDate FROM equipments WHERE due1 <> "1990-01-01" 
UNION ALL 
SELECT *, due2 as newDate FROM equipments where due2 <> "1990-01-01"
UNION ALL 
SELECT *, due3 as newDate FROM equipments WHERE due3 <> "1990-01-01" 
ORDER BY newDate ASC 

在 Laravel?

如果您查看 unions 下的 Laravel 文档,您可以创建多个 select 语句,最后一个语句使用 union() 函数 and/or unionAll()函数

如上所述,解决方案是 unionAll() 语句:

$TMUDue = Equipments::Where('due1', '<>', '1990-01-01')
                                ->select('*', 'due1 AS newDate');
$CalDue = Equipments::Where('due2', '<>', '1990-01-01')
                                ->select('*', 'due2 AS newDate');
$SerDue = Equipments::Where('due3', '<>', '1990-01-01')
                                ->select('*', 'due3 AS newDate');
$equipmentsDue = $SerDue->unionAll($CalDue)->unionAll($TMUDue)->orderBy('newDate' , 'ASC')->get();

有趣的是 union() 只有结果是单一的,尽管 due1due2<> 1990-01-01unionAll() 结果是同一设备的两个条目这个例子。

正是我要找的。感谢回复!