从数据库的第一个日期到今天获取数据

时间:2020-04-29 04:06:26

标签: mysql laravel eloquent

我想按日期对数据进行分组并在图表上查看。这是我的数据示例:

count                            created_at
-----                            ----------
 5                               2020/04/20
 4                               2020/04/21
 3                               2020/04/25
 9                               2020/04/28

在获取数据时我希望我的数据

count                            created_at
-----                            ----------
 5                               2020/04/20
 4                               2020/04/21
 0                               2020/04/22
 0                               2020/04/23
 0                               2020/04/24
 3                               2020/04/25
 0                               2020/04/26
 0                               2020/04/27
 9                               2020/04/28

当该日期没有数据时,它将显示为0。你们可以帮我如何在laravel控制器上获取它吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

@Alun这是如何执行此操作的示例:

const AWS = require('/usr/local/lib/node_modules/aws-sdk');

只需在此查询中用您的表名代替qemu-system-aarch64 -cdrom "C:\Users\GHU0002\Downloads\openSUSE-Tumbleweed-NET-aarch64-Snapshot20200421-Media.iso" -drive file=Drive.qcow2 -m 2G -smp 4 -machine sbsa-ref -usbdevice tablet -net nic -net user -accel tcg,thread=multi -vga xenfb -display gtk (从表中修改日期列名,相应地替换为SELECT `dateList`.`Date`, CASE WHEN `yt`.`date` IS NULL THEN 0 ELSE COUNT(`yt`.`id`) END AS `amt` FROM -- this is the part you can copy/paste -- to be used to left join in a table of your choice -- --------------------------------------------------------------------------------------------------------------------------- ( SELECT `a`.`Date` FROM ( SELECT NOW() - INTERVAL (`a`.`a` + (10 * `b`.`a`) + (100 * `c`.`a`)) DAY AS `Date` FROM (SELECT 0 AS `a` UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS `a` CROSS JOIN (SELECT 0 AS `a` UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS `b` CROSS JOIN (SELECT 0 AS `a` UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS `c` ) AS `a` WHERE `a`.`Date` BETWEEN '2020-04-01' AND NOW() ) AS `dateList` -- --------------------------------------------------------------------------------------------------------------------------- LEFT JOIN `yourTable` AS `yt` ON `dateList`.`Date` = DATE(`yt`.`date`) GROUP BY `dateList`.`Date` ORDER BY `dateList`.`Date` ASC ),这将为您提供每月显示的列表,显示没有任何价值的月份中的任何一天为0。

就可以在Laravel控制器中使用雄辩的方法使它起作用,但是我不知道该怎么做。您可以在控制器中使用此原始SQL来完成所需的操作。

Here's an example of how it works in sql fiddle.

希望这会有所帮助!