Symfony 2 - Doctrine ORM 更新查询不起作用

Symfony 2 - Doctrine ORM Update query not working

我正在尝试使用 Doctrine 通过以下查询更新 mysql table。但是 table 没有得到更新。下面的代码也没有抛出任何错误。我完全糊涂了。如果我 运行 查询,取自 getDQL() 方法,在 mysql 中直接显示 0 行更新,因为不正确的 qoutes。在为查询中的值放置适当的 qoutes 后,它正在工作。需要帮助来解决这个难题。

由于我是 doctrine 的新手,我将使用 querybuilder class 文件中给出的示例。

    $support = $this->createQueryBuilder('p')
                    ->update('gcns', 'g')
                    ->set("g.isActive", "0")
                    ->andWhere("g.issn='".$issn."'");

您执行过查询还是只是构建查询?你应该按照这些行来执行它:

$support->getQuery()->getSingleScalarResult();

If i run the query, taken from getDQL() method, in mysql directly it showing 0 rows updated becuase of inproper qoutes.

getDQL() returns DQL 不是 SQL,因此如果您尝试直接在 MySQL 中 运行 它会包含不正确的引号,但这是预料之中的。

您不应将 $issn 连接到您的查询中。您应该改用参数:

$qb = $this->createQueryBuilder()

$support = $qb->update('gcns', 'g')
   ->set('g.isActive', '0')
   ->andWhere( $qb->expr()->eq('g.issn', ':issn') )
   ->setParameter( 'issn', $issn )
   ->getQuery()->getSingleScalarResult()
;