laravel eloquent 获取最近 3 小时内的记录
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/38607035/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
eloquent fetch records within recent 3 hours
提问by vijayrana
I need to fetch all the records which is inserted between past 3 hours to current(now). I am using laravel framework(eloquent orm).
我需要获取在过去 3 小时到当前(现在)之间插入的所有记录。我正在使用 Laravel 框架(雄辩的 orm)。
I tried this found here
我试过这个发现here
$lb = \DB::table('myTable')->whereRaw('created_at = DATE_ADD(NOW(), INTERVAL -3 HOUR');
But it return NULL. Is there any way I can do using eloquent but not Raw Query?
但它返回NULL。有什么办法可以使用 eloquent 而不是 Raw Query?
Any Help would be appreciated.
任何帮助,将不胜感激。
采纳答案by Alok Patel
We can use PHP DateTime. Like this,
我们可以使用 PHP DateTime。像这样,
$date = new \DateTime();
$date->modify('-3 hours');
$formatted_date = $date->format('Y-m-d H:i:s');
$lb = \DB::table('myTable')->where('created_at', '>',$formatted_date);
In above code what we're doing is creating date string with PHP and using that in query.
在上面的代码中,我们正在做的是用 PHP 创建日期字符串并在查询中使用它。
回答by Chris
Laravel comes with Carbon, a nice library to handle dates, which can be used in combination with Eqlouent.
Laravel 附带了 Carbon,这是一个处理日期的好库,可以与 Eqlouent 结合使用。
Example:
例子:
\DB::table('myTable')
->where('created_at', '>',
Carbon::now()->subHours(3)->toDateTimeString()
);
More Information
更多信息
For more fun date methods, check out these docs on Carbon http://carbon.nesbot.com/docs/#api-addsub
有关更多有趣的日期方法,请查看 Carbon http://carbon.nesbot.com/docs/#api-addsub上的这些文档
回答by Rakesh Kumar
Try This
尝试这个
$lb = \DB::table('myTable')->whereRaw('created_at >= DATE_SUB(NOW(), INTERVAL 3 HOUR)')
In your statement you are using =(206-07-27 11:30:00) instead >=(206-07-27 11:30:00)
在您的声明中,您使用=(206-07-27 11:30:00) 代替>=(206-07-27 11:30:00)
回答by Akram Wahid
try this,
include use Illuminate\Support\Facades\DB;namespace in your controller
试试这个,use Illuminate\Support\Facades\DB;在你的控制器中包含命名空间
and try this code
并尝试此代码
$results = DB::table('yourtable')->select('*')->where('created_at >= DATE_SUB(NOW(),INTERVAL 1 HOUR)')->get();
回答by ananimattor
as created_at is datetime field, you can use this
由于 created_at 是日期时间字段,您可以使用它
\DB::table('myTable')->where('created_at', '<', Carbon::now()->subHours(3)->toDateTimeString())->get();

