我试图用Doctrine的QueryBuilder调试一个非常奇怪的问题。我做的事情看起来大致如下:
$entity->setDeleted(true);
$em->persist($entity);
$em->flush(entity);
//the filter basically appends 'deleted = 0' to the query
$em->getFilters()->enable('softdelete');
$qb = $em->createQueryBuilder()
->from($entity_class, 'c')
->where('c.id = ?0')
->setParameter(0, $entity->getId())
->select("COUNT(c)");
$result = intval($qb->getQuery()->getSingleScalarResult());
我期望发生的事情当然是$ result为零,但相反,我得到1.如果我手动检查数据库,则值似乎写得正确(即它表示" 1&#34 ;不是" 0")
所以我尝试启用Doctrine的SQLEchoLogger来查看执行了哪种语句,奇怪的是:当启用记录器时,结果为零,如预期的那样。所以我想知道:我怎么能调试这个问题,它会是什么? DB驱动程序是pdo_mysql(带有MyISAM表),据我所知,我没有启用缓存。