gpt4 book ai didi

symfony - DELETE 查询在 DQL 学说 Symfony2 中不起作用

转载 作者:行者123 更新时间:2023-12-02 12:23:19 25 4
gpt4 key购买 nike

我要根据 ID 删除一行,我使用此查询来完成该任务:

 $em = $this->getDoctrine()->getManager();
$query = $em->createQuery('DELETE buss from StreetBumbApiBundle:BussOwner buss WHERE buss.id = :bussId')
->setParameter("bussId", $bussId);
$list = $query->getResult();

但我收到此错误:

{ "code": 500, "message": "[Semantical Error] line 0, col 7 near 'buss from StreetBumbApiBundle:BussOwner': Error: Class 'buss' is not defined." }

我做错了什么?

最佳答案

您可以使用 QueryBuilder 轻松解决此问题:

$em = $this->getDoctrine()->getManager();
$qb = $em->createQueryBuilder();
$query = $qb->delete('StreetBumbApiBundle:BussOwner', 'buss')
->where('buss.id = :bussId')
->setParameter('bussId', "bussId")
->getQuery();

$query->execute();

顺便说一句:如果将 getQuery 替换为 getDQL,您可以看到它如何转换为 DQL(或 getSQL)

您的方法的本质错误是删除语句中的 from,因为 DQL 中的删除如下所示:

$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'DELETE StreetBumbApiBundle:BussOwner buss
WHERE buss.id = :bussId')
->setParameter("bussId", $bussId);

$query->execute();

另外,我不确定您为什么使用$query->getResult()。删除的预期结果是什么? $query->execute(); 完成这项工作。

除此之外,如果您不执行复杂的删除语句,并且在您的情况下,您将删除使用 Id 查询的实体。

为什么不:

$em = $this->getDoctrine()->getManager();
$em->remove($entity);

因此将实体(而不仅仅是 ID)传递给您的删除函数?

关于symfony - DELETE 查询在 DQL 学说 Symfony2 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31176909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com