2016-05-14 63 views
0

我在SQL鋒ORM 5.1查詢返回不正確的結果

SELECT id, alias FROM users WHERE 
    `time_last_active` > (NOW() - INTERVAL 1 MINUTE) ORDER BY alias 

一個相當簡單的查詢返回否(即:零)的行現在(這對於我的數據是正確的/預期的結果)。

我嘗試使用以下代碼

class Users extends Model 
{ 
    protected $table = 'users'; 

    public static function getActiveUsers() 
    { 
     return self::where ('time_last_active', '>', "(NOW() - INTERVAL 1 MINUTE)") 
      ->orderBy('alias') 
      ->get(['id','alias']) 
      ->toArray(); 
    } 
} 

這個查詢的執行沒有錯誤,並返回一個有效的結果(即實現在口才ORM相同的查詢:含有「id」和「別名」的每個行的陣列)但它返回表中的每一行。

有沒有人知道我在做什麼錯在這裏?我一直在盯着這一段時間,而我只是沒有看到它。

感謝您的任何提示。

回答

2

爲了使用原始SQL「(NOW() - 時間間隔1分鐘)」,則需要在通話中把它包起來,以DB ::原始(),否則將被視爲作爲一個字符串,而不是SQL語法。

下面應該工作:

return self::where('time_last_active', '>', \DB::raw("(NOW() - INTERVAL 1 MINUTE)")) 
    ->orderBy('alias') 
    ->get(['id','alias']) 
    ->toArray(); 
+0

謝謝,原來如此! – user13955

相關問題