gpt4 book ai didi

php - Eloquent - 按天获取记录

转载 作者:行者123 更新时间:2023-12-04 16:46:54 25 4
gpt4 key购买 nike

我有一个代表某些事件的数据库记录列表。每个都有一个 start_time 列,其中包含以下格式的日期:2017-10-28 22:00:00。我希望能够使用 Laravel 获取其列 start_time 是星期五的所有记录。像这样:

$fridayEvents = $q->whereDate('start_time', '=', isFriday());

但是我很难用 Carbon 创建 isFriday()

最佳答案

MySQL(和其他 SQL)实现 WEEKDAY()从日期中提取工作日的函数:

WEEKDAY(date)

Returns the weekday index for date (0 = Monday, 1 = Tuesday, … 6 = Sunday).

mysql> SELECT WEEKDAY('2008-02-03 22:23:00');
-> 6
mysql> SELECT WEEKDAY('2007-11-06');
-> 1

所以你可以这样查询:

$q->whereRaw('WEEKDAY(your_table_name.start_date) = 4')

这种方式比使用 Carbon 直接在 PHP 上过滤结果更有效:

  • 您将使用比 Carbon over PHP 更快的本地数据库函数处理数据。
  • 只有相关数据才会从数据库传输到 PHP,从而减少查询时间和内存使用量

为了获得最佳性能,您需要创建一个列来存储工作日,这样您的数据库将能够使用索引来避免全表扫描,从而为您提供最佳性能。

关于php - Eloquent - 按天获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46722191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com