You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Eloquent的where方法:直接传Carbon对象还是用时间戳?

Laravel Eloquent where()中Carbon对象与时间戳的使用选择

你不需要将Carbon对象转换为时间戳再传入where()方法,直接传入Carbon对象即可,这是更推荐的做法。

原因如下:

  • Laravel Eloquent内置了对Carbon对象的支持,会自动将其转换为数据库兼容的日期格式(匹配updated_at这类datetime/timestamp字段的存储格式)。
  • 直接使用Carbon对象能保留时区信息,避免因转换时间戳导致的时区偏差问题——你已经指定了Asia/Karachi时区,框架会自动处理时区转换,确保查询逻辑准确。
  • 代码可读性更高,直接传递日期对象比时间戳更直观,后续维护时能快速理解查询的时间范围。

优化后的代码示例:

$todayMarketCloseTime = Carbon::now('Asia/Karachi')->hour(15)->minute(10)->second(0);

return Ratio::where('updated_at', '>=', $todayMarketCloseTime)
    ->orderBy('ratio', 'desc')
    ->get();

补充说明:如果你的updated_at字段是整数类型(专门存储时间戳),那么传递时间戳是可行的,但Laravel默认生成的updated_at字段是datetime/timestamp类型,此时直接使用Carbon对象是最优选择。

内容的提问来源于stack exchange,提问作者Fakhar Anwar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 15:47:36