我想在Laravel 42中检索两个日期列之间的记录。
Model::where('created_at', '<=', 'created_at' + 5 days)->get();
我有一个created_at
列。我需要检索created_at
和created_at
+ 5天之间的所有记录。
我使用此方法添加有效的天date('Y-m-d H:i:s', strtotime(date('Y-m-d H:i:s') . '+5 days'));
。但我无法做到我想做的事。
至少可以吗?如果是,我该怎么做?
提前致谢!
答案 0 :(得分:2)
如果你想做原始SQL,那么你需要DB::raw()
。
但是,根据我是否正确理解您的问题,以下内容可能对您有用:
$now = \Carbon\Carbon::now();
$inFiveDays = \Carbon\Carbon::now()->addDays(5);
Model::where('created_at', '>', $now)->where('created_at', '<=', $inFiveDays)->get();
使用DB::raw()
并使用原始SQL执行此操作:
Model::whereRaw('created_at BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 5 DAY');
无论如何都是这样的。
答案 1 :(得分:0)
我还没有找到任何方法来使用SQL,所以我找到了这个解决方案:
$posts = Posts::all();
foreach ( $posts as $key => $post )
if ( strtotime($post->created_at . '+5 days') < time() )
unset( $posts[$key] );
我在这里做的是迭代整个对象数组。一旦我发现记录不符合我的时间限制,我就会从数组中删除它。