mysql - Doctrine - SQL 查询生成器 - 更新和连接?

标签 mysql symfony doctrine-orm

我使用 Doctrine 的 SQL 查询生成器 ( http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html )

并且想要通过连接进行更新案例。据我所知,这里不支持联接。所以我这样做:

$query = $dbalQueryBuilder->update('s_articles_attributes', 'aa')
                    ->set('aa.fp_pos_days', ':days')
                    ->where('aa.articledetailsID IN (SELECT a.id FROM s_articles a WHERE a.supplierID IN (:supplierIds))')
                    ->setParameter('days', $days_string)
                    ->setParameter('supplierIds', $supplierIds)
                    ->execute();

$supplierIds 为 string(39) "3,4,26,28,31,36,37,38,48,49,55,56,64,82"

当我运行此查询时,没有任何反应。当我这样做时:

$query = $dbalQueryBuilder->update('s_articles_attributes', 'aa')
                        ->set('aa.fp_pos_days', ':days')
                        ->where('aa.articledetailsID IN (SELECT a.id FROM s_articles a WHERE a.supplierID IN (3,4,26,28,31,36,37,38,48,49,55,56,64,82))')
                        ->setParameter('days', $days_string)
                        ->execute();

效果很好。有人知道为什么吗?那我做错了吗?我需要使用该变量...

最佳答案

我确实解决了:

我现在确实将值作为数组传递,关键是还要声明类型:

->setParameter('days', $days_string)
->setParameter('supplierIds', $supplierIds, \Doctrine\DBAL\Connection::PARAM_INT_ARRAY)

关于mysql - Doctrine - SQL 查询生成器 - 更新和连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46663984/

相关文章:

ubuntu 虚拟主机上的 Symfony2 调试工具栏未找到

mongodb - Symfony2 - 文档选择列表和 MongoDB

php - 如何在php表中打印多个ajax响应值

symfony - 重新运行 Doctrine 迁移

php - 使用 symfony 文件系统代替原生 PHP 的优势

php - ZF2 Form 将所有选择选项设置为在绑定(bind)时选择

symfony - 具有原则 :generate:entity in command line? 的可为空或唯一字段

php - SQL 从数据库获取 Woocommerce 产品缩略图

mysql - 使用来自 SELECT 子查询的值高效地更新查询

javascript - 使用 Node.js 从 MySQL 获取数据并将其显示在索引页上