如何转换Symfony 1.4 Doctrine:查询到普通的Mysql查询

时间:2014-05-25 06:09:11

标签: php symfony doctrine-orm doctrine symfony1

我已经搜索了很多关于如何将symfony doctrine查询转换为普通的mysql查询以进行调试的目的。

就像我在codeIgniter中一样

$this->db->last_query();

它将活动记录转换为mysql普通查询以进行调试。

所以我的问题是可以在symfony 1.4或symfony2中将教义转换为正常查询以进行调试,以及关键字是什么。

我的学说查询是

$q_fixed = Doctrine_Query::CREATE()
                ->select('u.name')
                ->from("fields u")
                ->where("u.field_type_id=?", "1")
                ->leftJoin("u.FieldType t")
                ->leftJoin("u.FieldCategory c")
                ->groupBy("u.id");

如何将其转换为普通的mysql查询?

您的帮助将不胜感激。

谢谢

3 个答案:

答案 0 :(得分:1)

在symfony2中,您可以在查询对象上使用getSql(),但对于绑定参数,您将在查询中使用?而不是提供的参数,它将不会使用提供的参数提供完整查询

$query = $this->createQueryBuilder('u');
$query->select('u.name')
            ->from("fields u")
            ->where("u.field_type_id=?", "1")
            ->leftJoin("u.FieldType t")
            ->leftJoin("u.FieldCategory c")
            ->groupBy("u.id");
echo $query->getQuery()->getSql();

答案 1 :(得分:0)

只需运行控制器的开发版本并从调试工具栏中复制它。

$configuration = ProjectConfiguration::getApplicationConfiguration('myapp', 'dev', true);

答案 2 :(得分:0)

在Symfony 1.4中,您可以使用getSqlQuery()对象的Doctrine_Query方法。它将返回从dql转换的sql查询。请注意,它可能包含占位符而不是实际的参数值,您需要在执行时用正确的值替换它。