【发布时间】:2012-02-25 22:53:40
【问题描述】:
我正在将用 CodeIgniter 编写的简单 Web 应用程序移植到 Symfony2 包。我是 Symfony2 和 Doctrine 的新手,我对一个 SQL 查询有疑问,我想用 DQL 重写。我已经准备好进入我的包,我已经创建了实体类,我能够将数据插入数据库并以 Symfony2 提供的面向对象编程方式进行简单查询。不幸的是,我不知道如何在 DQL 中实现这个 SQL 查询:
$sql = "SELECT * FROM t WHERE
UNIX_TIMESTAMP(t.date) > ".(time()-300)." AND
ROUND(t.x,3) = ".round($x, 3);
如您所见,有一些 SQL 函数调用需要在数据库服务器上执行。教义无法理解这种呼唤。当然,我可以选择退出使用 Doctrine 并使用 Symfony2 包中的基本 PDO 执行此查询,但我想充分利用 Symfony2 和 Doctrine。因此,我想以 OOP 方式或使用能够理解以下内容的智能 DQL 查询来完成此操作:
$em->createQuery("SELECT t FROM MyTestBundle:MyEntity t WHERE t.x = :x")
->setParameter("x", round($x,3));
但是能够将我的 SQL 查询从旧应用程序重写到我的新包是必须的。请帮我找到正确的解决方案。
【问题讨论】:
标签: php sql symfony doctrine-orm dql