Symfony 是否可以将DQL查询生成器转换为查询生成器?
我有一个树结构,它由Symfony 是否可以将DQL查询生成器转换为查询生成器?,symfony,doctrine-orm,doctrine,Symfony,Doctrine Orm,Doctrine,我有一个树结构,它由Gedmo\tree管理。我想对子树中的一个字段进行复杂更新,此更新需要与另一个表连接,DQL不支持此更新。因此,我想通过Gedmo\Tree存储库方法childrenQueryBuilder获取DQL生成器,将其转换为QueryBuilder并添加update语句 $dqlQueryBuilder = $repository->childrenQueryBuilder($node, ...); $dqlQueryBuilder->resetDQLParts(['
Gedmo\tree
管理。我想对子树中的一个字段进行复杂更新,此更新需要与另一个表连接,DQL不支持此更新。因此,我想通过Gedmo\Tree
存储库方法childrenQueryBuilder
获取DQL生成器,将其转换为QueryBuilder
并添加update语句
$dqlQueryBuilder = $repository->childrenQueryBuilder($node, ...);
$dqlQueryBuilder->resetDQLParts(['select', 'orderBy']);
$queryBuilder = convert($dqlQueryBuilder);
$queryBuilder->leftJoin('...', 'lj');
$queryBuilder->update('node.update', 'concat(node.field, lj.field)');
我知道我可以编写定制的
QueryBuilder
,我只是想知道这样的转换是否可以通过条令内置工具或一些第三方库实现。条令中没有SQLQueryBuilder,只有QueryBuilder
这是一个DQL查询生成器。您可以通过执行以下操作将DQL
转换为SQL
$stringSql = $queryBuilder->getQuery()
->getSQL();
一旦有了它,您就可以使用本机sql,然后将其作为原始sql执行
注意:我不确定您确切的DB-Specific语句是什么意思,但是可以通过使用FunctionNode
class将DB-Specific函数映射到DQL。一旦将函数映射到DQL,就可以只使用DQL来完成它
检查如何在DQL中使用自定义DB函数是否可以发布DQL?或者可能是它的简化版本?是的,我更新了OPI,但对SQL查询生成器的描述不正确。SQL查询生成器=
\doctor\DBAL\query\QueryBuilder