📅  最后修改于: 2023-12-03 15:32:35.125000             🧑  作者: Mango
在 Laravel 中,我们可能需要对某个模型按照其创建时间或更新时间进行分组,并按照日期计数。这个过程可以通过 SQL 查询实现,但用 Laravel Eloquent 模型更加简单和直观。
在模型中设置 $dates
属性,将 created_at
和 updated_at
字段转换为日期格式。
protected $dates = ['created_at', 'updated_at'];
使用 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();
将结果返回。
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);
}
}