2017-03-08 1 views
1

심포니 1.4에 작성된 오래된 프로젝트가 있습니다Symfony 1.4 sfDoctrinePager : 커스텀 SQL을 설정하는 방법?

그리고 Doctrine을 사용하여 만들 수없는 SQL이 있습니다. 예를 들어,이 테스트 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 대상 DB 플랫폼, 특정 SQL 쿼리 구조를 SQL을 받아 가정 sfDoctrinePager 구현을 구현하는 것입니다 달성하기 위해 UNION있는 유일한 방법으로 사용자 정의 SQL을 사용해야하는 경우 ''Doctrine_Query' 매개 변수를 취합니다 (SQL 문자열이 아닙니다) – sglessard

답변

1

sfDoctrinePager 클래스를 사용하면 맞춤 SQL 문자열을 사용할 수 없습니다. Doctrine_Query의 인스턴스 만 허용합니다 (sfDoctrinePlugin sources 참조).

정확하게 필요한 작업을 수행하는 Doctring_Query 개체를 만들어야합니다 (UNION 때문에 불가능한 것 같습니다). 호출기는 플랫폼 독립적 인 방법 (예 : MySQL과 MS-SQL에서 차이가 있음)에서 쿼리를 수정 (LIMIT 및 OFFSET 추가)하기 전에 쿼리를 수정해야하므로 쿼리 개체가 필요합니다.

당신이 정말로 그것을 사용자 정의 등