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()
;
我正在尝试使用 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()
;