Doctrine查询删除

时间:2015-07-23 06:44:48

标签: php doctrine-orm

我有一个错误,我不理解一个学说查询。 我尝试删除具有特定ID的每个条目:

$qb = $this->doctrine->em->createQueryBuilder();
                $query = $qb
                ->delete('route', 'r')
                ->where("r.user_id = 423")
                ->getQuery();

                $query->execute();

当我执行这个时,我遇到了这个错误:

  

致命错误:未捕获的异常'Doctrine \ ORM \ Query \ QueryException'   消息'DELETE route r WHERE r.user_id = 423'in   /var/www/mywebsite/application/libraries/Doctrine/ORM/Query/QueryException.php:39   堆栈跟踪:#0   /var/www/mywebsite/application/libraries/Doctrine/ORM/Query/Parser.php(429):   Doctrine \ ORM \ Query \ QueryException :: dqlError('DELETE route r ...')#1   /var/www/mywebsite/application/libraries/Doctrine/ORM/Query/Parser.php(854):   Doctrine \ ORM \ Query \ Parser-> semanticalError('Class'route'i ...',   数组)#2   /var/www/mywebsite/application/libraries/Doctrine/ORM/Query/Parser.php(1132):   Doctrine \ ORM \ Query \ Parser-> AbstractSchemaName()#3   /var/www/mywebsite/application/libraries/Doctrine/ORM/Query/Parser.php(788):   Doctrine \ ORM \ Query \ Parser-> DeleteClause()#4   /var/www/mywebsite/application/libraries/Doctrine/ORM/Query/Parser.php(734):   Doctrine \ ORM \ Query \ Parser-> DeleteStatement()#5   /var/www/mywebsite/application/libraries/Doctrine/ORM/Query/Parser.php(229):   Doctrine \ ORM \ Query \ Parser-> QueryLanguage()#6 / var / in   /var/www/mywebsite/application/libraries/Doctrine/ORM/Query/QueryException.php   第49行

我不明白这个错误的含义。 感谢任何能引导我走向正确方向的人。

1 个答案:

答案 0 :(得分:1)

堆栈跟踪的这一位似乎暗示了类名的内容。

...semanticalError('Class 'route' i...', Array) 

您确定正确指定了实体名称吗?您应该使用包含命名空间的完全限定类名。

示例:DELETE MyProject\Model\Route r WHERE r.user_id = 4

<强>解决方案:

我。以防万一:

  1. 确保班级名称正确无误。 case和namespace + classname都有。
  2. 运行composer dump-autoload以确保您的课程已正确加载。
  3. 确保您的实体存在且已正确映射。
  4. II。请改用Doctrine的EntityManager删除方法。

    示例:

    $em = new EntityManager();
    $route= $em->find('route', 1);
    $em->remove($route);
    $em->flush();