【问题标题】:Get users credits for the last 7 days获取过去 7 天的用户积分
【发布时间】:2017-08-05 13:52:43
【问题描述】:

我正在尝试制作一个包含用户信用额度进展的条形图。我将积分更改存储在一个包含两列 old_amount 和 new_amount 的表中。它还有一个名为 time_added 的列。

我想如果我能抓住当天的最后一个并获得 new_amount 它会给我用户当天的信用计数。

$playersCredits7daysAgo = CashChanges::where('user_id', $player->id)->orderBy('time_added', 'DESC')->take(1)->new_amount;
$playersCredits6daysAgo = CashChanges::where('user_id', $player->id)->orderBy('time_added', 'DESC')->take(1)->new_amount;
$playersCredits5daysAgo = CashChanges::where('user_id', $player->id)->orderBy('time_added', 'DESC')->take(1)->new_amount;
$playersCredits4daysAgo = CashChanges::where('user_id', $player->id)->orderBy('time_added', 'DESC')->take(1)->new_amount;
$playersCredits3daysAgo = CashChanges::where('user_id', $player->id)->orderBy('time_added', 'DESC')->take(1)->new_amount;
$playersCredits2daysAgo = CashChanges::where('user_id', $player->id)->orderBy('time_added', 'DESC')->take(1)->new_amount;
$playersCreditsYesterday = CashChanges::where('user_id', $player->id)->orderBy('time_added', 'DESC')->take(1)->new_amount;
$playersCreditsToday = $player->credits;

您可以看到我的查询几乎可以正常工作,我将如何执行 where 子句以确保它在我需要的日期之内?并且没有从不同的日子选择一个?

我将添加的时间存储在名为 time_added 的列中,格式如下:2017-03-04 21:05:58

【问题讨论】:

  • 我们看不到您的查询几乎可以正常工作。 :P 我的意思是,它可能没有任何语法错误,运行时的结果是不同的野兽。
  • 我的查询运行良好,因为它运行良好。我只是寻求关于 where 子句的帮助。

标签: php mysql laravel


【解决方案1】:

你可以使用雄辩的whereDate方法

$playersCredits7daysAgo = CashChanges::where('user_id', $player->id)->whereDate('time_added', Carbon::today()->subDays(7))->first()->new_amount;

或者如果你想在一个查询中完成

CashChanges::where('user_id', $player->id)->where('time_added', '>', Carbon::today()->subDays(7))->pluck('new_amount', 'time_added');

这将返回 new_amounttime_added 的数组作为键

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多