【发布时间】:2017-02-01 10:38:28
【问题描述】:
我有一个雄辩的模型,其中有两列“开始日期”和“结束日期”。我想显示本周正在进行的所有模型,即“开始日期”和“结束日期”之间与本周任何日期匹配的任何日期。 我首先尝试只使用这样的开始日期:
$startOfWeek = Carbon::now()->startOfWeek()->startOfDay();
$endOfWeek = Carbon::now()->endOfWeek()->endOfDay();
$modelThisWeek = Model::whereBetween('startdate', [$startOfWeek, $endOfWeek])->get();
但很自然,一周前开始但仍在进行中(“结束日期”尚未完成)的任何内容都不会显示。
我怎样才能有效地获得本周有效的所有模型?
编辑:所以我有点想做(现在听起来很愚蠢)是获取 'startdate' 和 'enddate' 之间的所有日期,例如在一个数组中,获取当前日期之间的所有日期的第二个数组week 并像 array_intersect 一样使用并获取这些模型。我希望这次我解释得更清楚一点。
编辑 2:一些示例数据和预期结果。
数据库中的数据:
--------------------------------------------------
| ID | some_other_col | startdate | enddate |
--------------------------------------------------
| 1 | ... | 12. Jan 17 | 20. Feb 17 |
--------------------------------------------------
| 2 | ... | 12. Jan 17 | 18. Jan 17 |
--------------------------------------------------
| 3 | ... | 30. Jan 17 | 04. Feb 17 |
--------------------------------------------------
| 4 | ... | 04. Feb 17 | 07. Feb 17 |
--------------------------------------------------
| 5 | ... | 08. Feb 17 | 10. Feb 17 |
--------------------------------------------------
如果我想要本周内的所有模型:
29. 1 月 17 日 - 05. 2 月 17 日
我期望 ID 为 1、3、4 的模型;
与两个日期(startOfWeek 和 endOfWeek)内正在进行的所有模型一样。
【问题讨论】:
-
你能像
Model::whereBetween()->whereBetween()->get()一样拨打whereBetween2次吗? -
你可以这样做,但我只会得到本周开始日期和结束日期在本周的模型。如果开始日期是两个月前,结束日期是 3 周后呢?
-
这可能会有所帮助stackoverflow.com/questions/26082043/… 我不会使用 eloquent - 似乎 orWhereBetween 可以提供帮助!?
-
那也不行,在那个anwser上我只会得到那些开始日期在本周之间的模型和结束日期在本周之间的那些模型,但不是那些模型startdate 和 enddate 不在当前周内,但当前周在 startdate 和 enddate 之间。
标签: php laravel date eloquent where