Php Laravel:如何获得从昨天开始在本周内创建的所有记录的计数

Php Laravel:如何获得从昨天开始在本周内创建的所有记录的计数,php,mysql,sql,laravel,laravel-4,Php,Mysql,Sql,Laravel,Laravel 4,我想使用created_at time stamp获得截至昨天在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")); //q

我想使用created_at time stamp获得截至昨天在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');
           }

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

您可以使用Carbon进行此操作,这使得在Laravel中处理日期更容易。它包含在框架中。然后,您可以执行以下操作:

$yesterday = Carbon::now()->subDays(1);
$one_week_ago = Carbon::now()->subWeeks(1);

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', '>=', $one_week_ago)
        ->where('created_at', '<=', $yesterday)
        ->where('name',$name->f_name)
        ->groupBy('date')
        ->orderBy('date', 'DESC')
        ->lists('count', 'date');
}
$beday=Carbon::now()->subDays(1);
$1周前=碳::现在()->子周(1);
foreach($name\u列表为$name){
//在一周内创建
$data[$network->name.''u week']=Info::select(DB::raw('DATE('created_at`)作为'DATE`')、DB::raw('COUNT(*)作为'COUNT`'))
->其中('created_at','>=',$one_week'u前)

->其中('created_at','您还需要比较
date()
,使用碳元素更容易,尽管您不需要。这取决于您

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

无论如何,这将对您有用:

// 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');