php - Doctrine 和 Symfony2 : How to execute raw queries (General error: 2014 Cannot execute queries while > other unbuffered queries are active)

标签 php mysql symfony doctrine-orm

我正在尝试使用 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]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.")...

如何使用 PDOStatement::fetchAll()

最佳答案

使用createNativeQuery方法:

$query = $entityManager->createNativeQuery('SELECT COUNT(*) FROM `messages` WHERE `posted_by` = ? AND `message_posted` = 0', $rsm);
$query->setParameter(1, $user->getId());

$count = $query->getResult();

此处提供文档:http://doctrine-orm.readthedocs.org/en/latest/reference/native-sql.html

关于php - Doctrine 和 Symfony2 : How to execute raw queries (General error: 2014 Cannot execute queries while > other unbuffered queries are active),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31003515/

相关文章:

php - 将一组 ID 从 Swift URLSession 传递到 PHP 以进行 SQL 查询?

javascript - 阵列随机洗牌,同时在 Twig 中有约 500 行

php - Symfony 项目 CMS

php - 如何在模式中插入 100000 条记录

php - 使用 Ajax 和 PHP 加载数据库表

java - 如何在java中获取下一个数据库字符串?

php - 错误:预期的 Doctrine\ORM\Query\Lexer::T_WITH,得到 'ON'

php - 无法使用 for 循环使用 dompdf 渲染两个 pdf

php - uasort() 数组被用户比较函数修改

php - 在 HTML 表中包含 if 语句