有一个用symfony 1.4编写的旧项目
还有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;
}
它出现以下错误:
致命错误:在...中的非对象上调用__clone方法
帮助解决问题。
答案 0 :(得分:1)
对于库存sfDoctrinePager
类,无法使用自定义SQL字符串。它只接受Doctrine_Query
的实例(请参阅sfDoctrinePlugin sources)。
你应该构造一个Doctring_Query
对象,它完全符合你的需要(由于UNION,这可能是不可能的)。它需要一个查询对象,因为寻呼机需要在执行它之前修改查询(添加LIMIT和OFFSET)以独立于平台的方式(例如,它与MySQL和MS-SQL不同)。
如果确实需要将自定义SQL与UNION
一起使用,实现它的唯一方法是实现接受SQL的自定义sfDoctrinePager
实现并假设您的目标数据库平台,某些SQL查询结构,等