Gee*_*ika 5 dql symfony doctrine-orm
我要删除基于ID的行,我使用此查询来执行任务:
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery('DELETE buss from StreetBumbApiBundle:BussOwner buss WHERE buss.id = :bussId')
->setParameter("bussId", $bussId);
$list = $query->getResult();
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
{"code":500,"message":"[语义错误]第0行,第7行附近'来自StreetBumbApiBundle的Buss:BussOwner':错误:未定义类'buss'." }
我在做什么错了?
Der*_*fel 14
您可以使用QueryBuilder轻松解决此问题:
$em = $this->getDoctrine()->getManager();
$qb = $em->createQueryBuilder();
$query = $qb->delete('StreetBumbApiBundle:BussOwner', 'buss')
->where('buss.id = :bussId')
->setParameter('bussId', "bussId")
->getQuery();
$query->execute();
Run Code Online (Sandbox Code Playgroud)
BTW:如果您更换getQuery
同getDQL
你可以看到这是如何转化为DQL(或getSQL
)
你的方法基本上是错误的是from
你的Delete语句,因为DQL中的delete看起来像这样:
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'DELETE StreetBumbApiBundle:BussOwner buss
WHERE buss.id = :bussId')
->setParameter("bussId", $bussId);
$query->execute();
Run Code Online (Sandbox Code Playgroud)
另外,我不确定你为什么使用$query->getResult()
.删除的预期结果是什么?$query->execute();
做的工作.
除此之外,如果您不执行复杂的删除语句,并且在您的情况下,您正在删除使用Id查询的实体.
为什么不:
$em = $this->getDoctrine()->getManager();
$em->remove($entity);
Run Code Online (Sandbox Code Playgroud)
因此,将实体,而不仅仅是Id传递给您的删除功能?
归档时间: |
|
查看次数: |
12939 次 |
最近记录: |