2013-06-20 185 views
1

試圖防止用戶過快發佈評論,因此使用15秒間隔是計劃。Laravel/Eloquent - 15秒時間戳間隔

此查詢無法查看是否在最近15秒內發表了評論。我究竟做錯了什麼?

表:

id |  comment |  created_at  | 
============================================== 
2 | blah casd  | 2013-06-20 18:14:17 | 

不過,我不能完全得到它與雄辯

//are they commenting too fast? 
    $protection = DB::table('comments') 
     ->where('user_id', '=', $userid) 
     ->where('created_at', '<', '(NOW(), INTERVAL 15 SECOND)') 
     ->get(); 

    if(!empty($protection)) { 
     return Redirect::back()->with_message('Please wait 15 seconds between comments.', 'error'); 
    } 
+0

如果您使用的是Laravel 4,那麼我建議您使用Carbon。只需將Provider添加到列表中,以及'app/config/app.php'中的別名即可。更多關於碳在這裏:https://github.com/briannesbitt/Carbon –

+0

不幸的是我正在與L3 – cantaffordretail

回答

10

嘗試用

->where('created_at', '<', DB::raw('NOW() + INTERVAL 15 SECOND)') 

我更換

->where('created_at', '<', '(NOW(), INTERVAL 15 SECOND)') 

希望這可以有一些幫助。

+1

這不適合我。但這是: 其中('last_update','<',DB :: raw('DATE_SUB(NOW(),INTERVAL 7 DAY)')) – Kozmk12

+0

這隻適用於使用MySQL驅動程序。對於SQLite,你必須使用'datetime'函數,參見[相應的SO線程](http://stackoverflow.com/a/7547245/570503)。 – tomasbedrich

3

逗號是不正確的工作。你應該添加間隔:

NOW() + INTERVAL 15 SECOND 

或減法,如果將其更改爲>比較...

+0

嘿我試過這個,它仍然無法正常工作。這可能是不同時間戳的問題嗎? – cantaffordretail