2017-03-08 27 views
1

有一個用symfony 1.4編寫的舊項目Symfony 1.4 sfDoctrinePager:如何設置自定義SQL?

還有SQL,它是不可能使用Doctrine創建的。舉一個例子,考慮這個測試SQL:

SELECT id,name FROM users 
UNION ALL 
SELECT id*10 as id,name FROM users 

puvlic function getPager(){ 
$sql = "SELECT id,name FROM users 
     UNION ALL 
    SELECT id*10 as id,name FROM users"; 

$pager = new sfDoctrinePager('Users', 10); 
    $pager->setQuery($sql); 
    $pager->setPage(2); 
    $pager->init(); 
    return $pager; 
} 

它提供了以下錯誤:

Fatal error: __clone method called on non-object in ...

請幫助解決這個問題。

+0

'setQuery '接受'Doctrine_Query'參數(不是一個SQL字符串) – sglessard

回答

1

有貨sfDoctrinePager類不能使用自定義SQL字符串。它只接受Doctrine_Query的實例(請參閱sfDoctrinePlugin sources)。

您應該構建一個完全符合您需要的對象(這可能因爲UNION而不可能)。它需要一個查詢對象,因爲尋呼機需要在以獨立於平臺的方式執行它(添加LIMIT和OFFSET)之前修改查詢(例如,它與MySQL和MS-SQL不同)。

如果你真的需要使用自定義的SQL與UNION,只有這樣,才能實現這一目標是實現自定義sfDoctrinePager實現,接受SQL,並假設你的目標數據庫平臺,某些SQL查詢結構等

相關問題