Symfony2 SoftDeleteable not working on QueryBuilder Delete(Symfony2 SoftDeleteable 不适用于 QueryBuilder 删除)
问题描述
Softdelete 行为在通过实体管理器执行删除语句时正常工作,如下代码:
Softdelete behavior works fine on execute delete statement via the entity manager as the following code:
$entity = $this->em->getRepository('Users')->find(7);
$this->em->remove($entity);
$this->em->flush();
但是当通过 QueryBuilder 执行相同的功能时,硬删除将在数据库上执行
but when execute the same functionality via QueryBuilder hard delete will execute on database
$qb = $this->em->createQueryBuilder();
$qb->delete('Users', 'p');
$qb->where($qb->expr()->eq('p.id', ':id'));
$qb->setParameters(array("id" => 7));
$result = $qb->getQuery()->getResult();
如何在所有情况下通过实体管理器或查询构建器允许软删除
How can I allow softdelete in all cases either via entity manager or query builder
推荐答案
如果您使用 DQL,那么您必须使用查询提示.这应该可以解决问题:
If you use DQL then you have to use a Query Hint. This should do the trick:
$query = $qb->getQuery()
$query->setHint(
DoctrineORMQuery::HINT_CUSTOM_OUTPUT_WALKER,
'GedmoSoftDeleteableQueryTreeWalkerSoftDeleteableWalker'
);
$result = $query->getResult();
更新:
文档提到您必须使用查询提示,但没有提供示例,因此我从他们的测试中提取了用法.
The docs mention that you have to use a Query Hint but don't provide an example so I pulled the usage from their tests.
文档:https://github.com/l3pp4rd/DoctrineExtensions/blob/master/doc/softdeleteable.md
测试用法:https://github.com/l3pp4rd/DoctrineExtensions/blob/master/tests/Gedmo/SoftDeleteable/SoftDeleteableEntityTest.php
这篇关于Symfony2 SoftDeleteable 不适用于 QueryBuilder 删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Symfony2 SoftDeleteable 不适用于 QueryBuilder 删除


基础教程推荐
- 如何替换eregi() 2022-01-01
- 有什么方法可以用编码 UTF-8 而不是 Unicode 返回 PHP`json_encode`? 2021-01-01
- 如何在 Laravel 5.3 注册中添加动态下拉列表列? 2021-01-01
- PHP PDO MySQL 查询 LIKE ->多个关键词 2021-01-01
- 学说 dbal querybuilder 作为准备好的语句 2022-01-01
- PHP 类:全局变量作为类中的属性 2021-01-01
- 在PHP中根据W3C规范Unicode 2022-01-01
- Cron Jobs 调用带有变量的 PHP 脚本 2022-01-01
- 如何在 Laravel 中使用 React Router? 2022-01-01
- YouTube API v3 点赞视频,但计数器不增加 2022-01-01