【问题标题】:Get data from the last week SQL & Laravel从上周 SQL & Laravel 获取数据
【发布时间】:2018-08-21 18:56:36
【问题描述】:

我目前正在开发一个 Web 应用程序并使用 ChartJS。我需要获取过去 7 天的数据并进行计数。我解释一下:

我需要统计过去 7 天以来每天注册的客户数量,以便用 ChartJS 显示。

我的 SQL 请求有一些问题。

获取今天的日期:

$jj = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d"), date("Y")));

在我的数据库中,我有一个 'created_at' 列,其时间戳如下:

2018-08-21 11:07:59

对于请求,我遵循了一些教程并这样做了:

SELECT count(client.id) FROM parcel WHERE created_at = :dateclient, array('dateclient' => $jj);

但是请求不起作用,我认为有一些错误。如果有专业人士知道怎么做!

顺便说一句:我申请了一次约会,但我需要做 7 天

【问题讨论】:

  • 那么你在哪里设置日期倒退 7 天?
  • 试试这个 :: $jj = (new DateTime('now -7 days'))->format('Y-m-d H:i:s');
  • 也许我的解释不清楚,但问题不在于返回 7 天(在我的共享代码中,我尝试使用今天的日期)。但是如何执行我的 SQL 请求(比较 created_at 列中的日期时间和实际日期)。

标签: php sql laravel


【解决方案1】:

请使用 eloquent 查询来克服 SQL 注入,如下所示

这里我假设您在 App 文件夹中有 Models 文件夹,否则您可以直接使用 Parcel:: 而无需 Models\Parcel

$lastWeek = date('Y-m-d', strtotime("-7 day", date('Y-m-d')));
/* In the following code you can directly get the count value */
$parcelCount  = Models\Parcel::whereDate('created_at', $lastWeek)->count();

或使用 DB::raw

$parcelCount = Models\Parcel::select(\DB::raw("COUNT(id) as parcel_count"))
    ->whereDate('created_at', $lastWeek)
    ->first();

【讨论】:

  • 您好,感谢您的回复!但是当我尝试您的代码时,我收到以下错误:遇到格式不正确的数值在与 $lastWeek = date(...);
  • 当我将变量 $jj 与您的 $parcelCount 一起使用时,它终于起作用了。感谢您的回复和提示!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
  • 2019-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多