php - 时间戳列中的每日帖子计数

标签 php mysql laravel laravel-4

我的应用程序是使用 Laravel 4.1 构建的,支持 Laravel 今天正式支持的几乎所有数据库。我有一个 INT(10) 列,用于存储每个“帖子”的 Unix 时间戳,以指示帖子的创建时间。

有没有一种方法可以让我从这种设置中获取每天的帖子数量?基本上,我想用 Google Chart API 制作一个图表来指示过去 1 个月每天发布的帖子数量的趋势。

此外,我正在寻找围绕 DB::raw() 的解决方案,我更愿意使用查询生成器。

最佳答案

如果您想在数据库端执行聚合恕我直言,您必须使用 DB::raw() 因为您需要操作您的时间戳值。

如果理解正确,您主要关心的不是使用 DB::raw() 方法,而是不使用 供应商特定的日期时间函数(如 FROM_UNIXTIME() 在 MySQL 中)。

您可以发出这样的查询,以几乎与数据库无关的方式获得聚合结果(据我所知,所有主要的 DBMS 都有 FLOOR() 函数的实现)

SELECT FLOOR(timestamp / 86400) AS date , COUNT(*) AS total
  FROM post 
 GROUP BY FLOOR(timestamp / 86400)

用查询生成器转换成这样的东西

$result = DB::table('posts')
             ->select(DB::raw('FLOOR(timestamp / 86400) AS date, COUNT(*) AS total'))
             ->groupBy(DB::raw('FLOOR(timestamp / 86400) AS date, COUNT(*) AS total'))
             ->get();

示例输出:

|  DATE | TOTAL |
|-------|-------|
| 16081 |     2 |
| 16082 |     3 |

Here is SQLFiddle demo

And then in the client code convert date column value into a human readable form by

date('m/d/Y', 16081 * 86400)

当您遍历结果集时。

关于php - 时间戳列中的每日帖子计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21071453/

相关文章:

locale - php.ini 中的 PHP 语言环境配置

javascript - Wordpress 插件样式和 javascript 未加载(管理部分)

PHP 在 MySQL 中突出显示搜索词

mysql - 如何仅将 MySQL 权限授予特定行

php - 交响乐2 : How to reuse variable(username) inside template?

php - 比较时间时的 Laravel 问题 - 日期格式

php - PDO(PHP 数据对象)的缺点

php - 在php表单提交中使用ajax上传图像

php - 现实世界场景中的 Laravel PayPal 教程

Laravel:为所有模型创建一个通用函数