dtq26360 2018-11-30 19:26
浏览 161
已采纳

Laravel5.7:使用视图中返回的模型获取当月的sum()

I am trying to get the sum of a field 'time_spent' for the current month, so when it's the next month it will start over again. I currently have in my model:

 public function transactions()
{
    return Transaction::groupBy('created_at')
    ->selectRaw('sum(time_spent) as sum')
    ->pluck('sum');
}

Then in my blade view I am calling using:

$info->transactions()->sum()

This does return the sum of time_spent from the DB, but it doesn't care about the created_at, I am assuming its not using it, My column for created_at is timestamp()

  • 写回答

2条回答 默认 最新

  • duanbai1370 2018-11-30 19:46
    关注

    You need to use the methods whereMonth and whereYear to filter the transactions by the current month and year. After that, you can use the database's sum method to sum all time_spent.

    Your method should look like this:

    public function transactions($year, $month)
    {
        return Transaction::whereYear('created_at', $year)
            ->whereMonth('created_at', $month)
            ->sum('time_spent');
    }
    

    This will run a query similar to this (it depends on which database you're using):

    SELECT SUM(transactions.time_spent) FROM transactions WHERE YEAR(transactions.created_at) = 2018 AND MONTH(transactions.created_at) = 11;
    

    To get the current month, you should call the method like this:

    $month = date('m');
    $year = date('Y');
    
    $transactions = $info->transactions($month, $year);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?