📜  laravel 按日期计数 - PHP (1)

📅  最后修改于: 2023-12-03 15:32:35.125000             🧑  作者: Mango

Laravel 按日期计数 - PHP

在 Laravel 中,我们可能需要对某个模型按照其创建时间或更新时间进行分组,并按照日期计数。这个过程可以通过 SQL 查询实现,但用 Laravel Eloquent 模型更加简单和直观。

步骤
  1. 在模型中设置 $dates 属性,将 created_atupdated_at 字段转换为日期格式。

    protected $dates = ['created_at', 'updated_at'];
    
  2. 使用 Laravel Eloquent 模型的 groupBy() 方法和 raw() 方法进行分组和计数。在 raw() 方法中使用 MySQL 的 DATE() 函数将日期转换为字符串。

    $counts = Model::select(\DB::raw('DATE(created_at) as date'), \DB::raw('count(*) as count'))
                ->groupBy('date')
                ->get();
    
  3. 将结果返回。

    return response()->json($counts);
    
完整示例
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Model;

class ModelController extends Controller
{
    public function countByDate()
    {
        $counts = Model::select(\DB::raw('DATE(created_at) as date'), \DB::raw('count(*) as count'))
                    ->groupBy('date')
                    ->get();
        return response()->json($counts);
    }
}
参考资料