如何过滤laravel的时间戳?
问题描述:
我想在这段时间内过滤记录的结果,但是我找不到如何使用where子句来获取确切范围的数据的任何示例。如何过滤laravel的时间戳?
这些是从形式发布所述数据:
[monthRangeStart] => 12
[yearRangeStart] => 2013
[monthRangeEnd] => 12
[yearRangeEnd ] => 2013
以下是的updated_at时间戳的格式
2013年12月18日7点22分34秒
我应该如何完成的代码
$trans = Transaction::where('updated_at',)
答
在我看来,如果你决定使用一些框架,你应该使用它提供的工具,以创造更好的解决方案。 Laravel拥有非常漂亮的Carbon类用于日期操作。这是我的解决方案:
$trans = Transaction::whereBetween('updated_at', [
\Carbon\Carbon::createFromDate(Input::get('yearRangeStart'), Input::get('monthRangeStart'))->startOfMonth(),
\Carbon\Carbon::createFromDate(Input::get('yearRangeEnd'), Input::get('monthRangeEnd'))->endOfMonth()
])->get();
在这种情况下,您将永远不会错过任何特定月份的天数。
+0
真棒! Thx教我学习碳:D – 1myb
答
行这应该这样做...
$trans = Transaction::where('updated_at', '>', "$yearRangeStart-$monthRangeStart-00 00:00:00")
->where('updated_at', '<', "$yearRangeEnd-$monthRangeEnd-31 99:99:99")
->get();
如果您决定需要过滤日/小时/分钟/秒,那么您可以将它们替换当你去时。
答
你可以试试这样
$start = Input::get('yearRangeStart') . '-' . Input::get('monthRangeStart');
$end = Input::get('yearRangeEnd') . '-' . Input::get('monthRangeEnd') . '-' . '31';
$trans = Transaction::whereBetween('updated_at', array($start, $end))->get();
更新的东西:
$start = Input::get('yearRangeStart') . '-' . Input::get('monthRangeStart');
$endYear = Input::get('yearRangeEnd');
$endMonth = Input::get('monthRangeEnd');
$endDays = cal_days_in_month(CAL_GREGORIAN, $endMonth, $endYear);
$end = $endYear . '-' . $endMonth . '-' . $endDays;
$trans = Transaction::whereBetween('updated_at', array($start, $end))->get();
请在Laravel论坛中查看[此帖子](http://forums.laravel.io/viewtopic.php?pid=14728#p14728)。 – 2013-12-18 17:09:23
@André,万一没有约会? – 1myb
你的问题到底是什么? –