Php Symfony 1.4 SFdoctrinePage:如何设置自定义SQL?

Php Symfony 1.4 SFdoctrinePage:如何设置自定义SQL?,php,mysql,pagination,doctrine,symfony1,Php,Mysql,Pagination,Doctrine,Symfony1,有一个用symfony 1.4编写的旧项目 还有一种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"; $

有一个用symfony 1.4编写的旧项目

还有一种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;
}
它给出了以下错误:

致命错误:\对中的非对象调用了克隆方法


请帮助解决此问题。

对于stock
sfDoctrinePager
类,无法使用自定义SQL字符串。它只接受
原则查询的实例(请参阅)

您应该构造一个
Doctring\u Query
对象,该对象完全满足您的需要(由于联合,这很可能是不可能的)。它需要一个查询对象,因为pager需要在以独立于平台的方式执行查询之前修改查询(添加限制和偏移量)(例如,在MySQL和MS-SQL上是不同的)


如果您确实需要将自定义SQL与
UNION
一起使用,那么实现它的唯一方法是实现您的自定义
sfdoctrinePage
实现,该实现接受SQL并假定您的目标数据库平台、特定SQL查询结构等。

setQuery
采用
doctor\u query
参数(不是SQL字符串)