信息发布→ 登录 注册 退出

laravel怎么在Eloquent模型中使用whereDate和whereMonth_laravel Eloquent whereDate/whereMonth使用方法

发布时间:2025-11-01

点击量:
答案是使用 whereDate 和 whereMonth 方法可按日期或月份筛选数据,如 User::whereDate('created_at', '2025-04-05') 查询指定日期记录,User::whereMonth('created_at', 5) 查询 5 月数据,支持比较操作和链式组合条件。

在 Laravel 的 Eloquent 模型中,你可以直接使用 whereDatewhereMonth 方法来对日期字段进行条件查询。这些方法属于 Laravel 查询构造器的一部分,适用于处理 MySQL 中的 DATE、DATETIME 类型字段。

whereDate 使用方法

当你需要根据日期(年-月-日)筛选数据时,比如查找某一天创建的所有用户:

User::whereDate('created_at', '2025-04-05')->get();

这会生成类似 SQL:

SELECT * FROM users WHERE DATE(created_at) = '2025-04-05';

你也可以使用比较操作符:

User::whereDate('created_at', '>=', '2025-01-01')->get();

whereMonth 使用方法

如果你只想按月份筛选,比如查找所有在 5 月注册的用户:

User::whereMonth('created_at', '5')->get();

支持补零写法,以下等价:

  • whereMonth('created_at', 5)
  • whereMonth('created_at', '05')

也支持比较操作:

User::whereMonth('created_at', '>=', 3)->get(); // 第二季度及以后

组合使用多个日期条件

你可以链式调用这些方法实现更复杂的查询,例如查找 2025 年 4 月注册的用户:

User::whereYear('created_at', 2025)
     ->whereMonth('created_at', 4)
     ->get();

或者结合 whereDate 精确到天:

User::whereDate('created_at', '>=', '2025-04-01')
     ->whereDate('created_at', '<=', '2024-04-30')
     ->get();

注意事项

  • 这些方法底层调用的是 MySQL 的 DATE()MONTH() 函数,因此会影响索引使用效率,大数据量下建议配合日期范围优化。
  • 字段必须是合法的日期或时间类型,如 created_atupdated_at 或自定义的 datetime 字段。
  • 如果使用了访问器(accessor)修改了日期格式,需注意原始字段仍要可被数据库函数处理。

基本上就这些,Laravel 的 whereDate 和 whereMonth 让日期查询变得非常直观和简洁。

标签:# 你可以  # 只想  # 自定义  # 适用于  # 当你  # 你也  # 多个  # 如果你  # 的是  # mysql  # 链式  # 数据库  # 访问器  # date  # sql  # red  # laravel  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!