Laravel:如何计算截至昨天本周内创建的所有记录

use*_*434 4 php mysql sql laravel laravel-4

我希望使用created_at时间戳来计算昨天在laravel中创建的一周的记录,我有:

//week date range upto current day
$name_current_day = date("l");
$name_current_week = date("Y-m-d",strtotime('monday this week')).'to'.date("Y-m-d",strtotime("$name_current_day this week"));

//query to get count
foreach($name_list as $name){
                //created in week
                $data[$network->name.'_week'] = Info::select( DB::raw('DATE(`created_at`) as `date`'),DB::raw('COUNT(*) as `count`'))
                    ->where('created_at', '>', $name_current_week)
                    ->where('name',$name->f_name)
                    ->groupBy('date')
                    ->orderBy('date', 'DESC')
                    ->lists('count', 'date');
           }
Run Code Online (Sandbox Code Playgroud)

当我运行此查询时,我没有得到准确的结果,这是在Laravel中获取最近7天记录的正确方法.

Jar*_*zyk 10

您也需要进行比较date(),并且使用Carbon更容易,但您不需要.由你决定.

编辑:你的问题有点不清楚,但似乎你不想要一周,但只有本周的结果.

无论如何,这对你有用:

// week old results:
// $fromDate = Carbon\Carbon::now()->subDays(8)->format('Y-m-d');
// $tillDate = Carbon\Carbon::now()->subDay()->format('Y-m-d');

// this week results
$fromDate = Carbon\Carbon::now()->subDay()->startOfWeek()->toDateString(); // or ->format(..)
$tillDate = Carbon\Carbon::now()->subDay()->toDateString();


Info::selectRaw('date(created_at) as date, COUNT(*) as count'))
    ->whereBetween( DB::raw('date(created_at)'), [$fromDate, $tillDate] )
    ->where('name',$name->f_name)
    ->groupBy('date')
    ->orderBy('date', 'DESC')
    ->lists('count', 'date');
Run Code Online (Sandbox Code Playgroud)