我正在尝试使用Doctrine使用以下查询更新mysql表。但表格没有得到更新。下面的代码也没有抛出任何错误。我完全糊涂了。如果我运行查询,取自getDQL()方法,在mysql直接显示0行更新,因为inproper qoutes。在为查询中的值放置适当的qoutes之后它正在工作。需要帮助解决这个难题。
由于我是新学说,我将使用querybuilder类文件中的示例。
{{1}}
答案 0 :(得分:0)
您是执行查询还是只是构建它?你应该沿着这些方向执行它:
$support->getQuery()->getSingleScalarResult();
如果我运行查询,取自getDQL()方法,直接在mysql中显示0行更新,因为不合适的qoutes。
getDQL()
返回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()
;