Léo*_*oco 3 php laravel eloquent php-carbon
我有一个代表某些事件的数据库记录列表。每个都有一个start_time包含以下格式的日期的列:2017-10-28 22:00:00。我希望能够start_time使用 Laravel 获取列为星期五的所有记录。像这样的东西:
$fridayEvents = $q->whereDate('start_time', '=', isFriday());
Run Code Online (Sandbox Code Playgroud)
isFriday()但我在用 Carbon进行创作时遇到了困难。
MySQL(和其他 SQL)实现WEEKDAY()函数,该函数从日期中提取工作日:
\n\n\n\n\n工作日(日期)
\n\n返回日期的工作日索引(0 = 星期一,1 = 星期二,\xe2\x80\xa6 6 =\n 星期日)。
\n\nRun Code Online (Sandbox Code Playgroud)\nmysql> SELECT WEEKDAY(\'2008-02-03 22:23:00\');\n -> 6\nmysql> SELECT WEEKDAY(\'2007-11-06\');\n -> 1\n
所以你可以做这样的查询:
\n\n$q->whereRaw(\'WEEKDAY(your_table_name.start_date) = 4\')\nRun Code Online (Sandbox Code Playgroud)\n\n这种方式比使用 Carbon 直接在 PHP 上过滤结果更有效:
\n\n为了获得最佳性能,您需要创建一个列来存储工作日,这样您的数据库将能够使用索引来避免全表扫描,从而为您提供最佳性能。
\n| 归档时间: |
|
| 查看次数: |
5680 次 |
| 最近记录: |