2014-07-23 34 views
1

不執行使用爾康框架MySQL查詢中爾康

這個MySQL查詢的目的是要在一個論壇上返回的最後1天之內評論數:

SELECT fc.forum_id, count(fc.forum_id) AS total_comments 
FROM forum_comments AS fc 
WHERE DATE_SUB(CURDATE() , INTERVAL 1 
DAY) <= fc.updated_at 
GROUP BY fc.forum_id 
ORDER BY total_comments DESC 
LIMIT 0 , 30 

它將在phpMyAdmin正常運行但多爾康拋出:

說明:試圖讓用C非對象的屬性:\ XAMPP \ htdocs中\錫德拉\應用\控制器\ ApiController.php上線810中的語法錯誤,意外的標記INTEGER(1),靠近'DAY)< = fc.updated_at GROUP BY fc.forum_id ORDER BY total_comments DESC',when parsing:SELECT fc.forum_id,count(fc.forum_id)as total_comments FROM ForumComments as fc WHERE DATE_SUB(CURDATE(),INTERVAL 1 DAY)< = fc .updated_at GROUP BY fc.forum_id ORDER BY DESC TOTAL_COMMENTS個(215)

我爾康代碼:

$sql = "SELECT fc.forum_id,count(fc.forum_id)as total_comments ". 
       "FROM ForumComments as fc ". 
       "WHERE DATE_SUB(CURDATE() , INTERVAL 1 
       DAY) <= fc.updated_at ". 
       "GROUP BY fc.forum_id ". 
       "ORDER BY total_comments DESC "; 

     $query = $this->modelsManager->createQuery($sql); 
     $staff = $query->execute()->toArray(); 

如果有任何替代辦法做到這一點?

+0

看起來像有一個查詢解析錯誤。我會點擊phalcon doco來了解關於查詢解析 – Phil

回答

3

您的查詢是正確的,並在4.1到5.6.6的MySQL版本上正常工作。所以看起來createQuery()方法試圖解析查詢並且在INTERVAL子句上失敗。我會建議你嘗試這樣的事情:

$yesterday = date('Y-m-d', strtotime("-1 days")); 

$sql = "SELECT fc.forum_id,count(fc.forum_id)as total_comments ". 
      "FROM ForumComments as fc ". 
      "WHERE '$yesterday' <= fc.updated_at ". 
      "GROUP BY fc.forum_id ". 
      "ORDER BY total_comments DESC "; 

$query = $this->modelsManager->createQuery($sql); 
$staff = $query->execute()->toArray(); 
+0

Thanx這工作 –