【发布时间】:2015-06-23 13:00:46
【问题描述】:
我正在尝试使用 Doctrine 在 Symfony 框架中执行原始查询。
这里有代码:
class MessagesHandler
{
/** @var \Doctrine\Common\Persistence\ObjectManager The entity manager used to access entities */
protected $em = null;
public function __construct($em)
{
$this->em = $em;
}
public function getMessagesToPost($user)
{
$query = 'SELECT COUNT(*) FROM `messages` WHERE `posted_by` = ' . $user->getId() . ' AND `message_posted` = 0';
return $this->em->getConnection()->exec($query);
}
我已将 MessagesHandler 类设置为服务:
services:
shq.handler.Messages:
class: AppBundle\Handler\MessagesHandler
arguments: ["@doctrine.orm.entity_manager"]
现在,当我执行代码时,我收到以下错误:
SQLSTATE[HY000]:一般错误:2014 无法执行查询,而 其他无缓冲查询处于活动状态。考虑使用 PDOStatement::fetchAll()。或者,如果您的代码只是 要针对 mysql 运行,您可以通过设置启用查询缓冲 PDO::MYSQL_ATTR_USE_BUFFERED_QUERY 属性。")...
如何使用PDOStatement::fetchAll()?
【问题讨论】:
-
您可以在调用查询之前尝试调用 $em->getConnection()->fetchAll() 或 $em->flush 吗?转储结果以查看它是否是您可能正在获取的重要数据以及您想要保留在某处的数据。
-
你能不能在某处丢失
em->flush()?
标签: php mysql symfony doctrine-orm