gpt4 book ai didi

doctrine - DQL 从多个表中删除( Doctrine )

转载 作者:行者123 更新时间:2023-12-01 22:47:47 27 4
gpt4 key购买 nike

我需要从多个相关表中执行 DQL 删除。
在 SQL 中,它是这样的:

  DELETE r1,r2 
FROM ComRealty_objects r1, com_realty_objects_phones r2
WHERE r1.id IN (10,20) AND r2.id_object IN (10,20)

我需要使用 DQL 来执行这个语句,但我坚持这个。 :(
<?php
$dql = Doctrine_Query::create()
->delete('phones, comrealtyobjects')
->from('ComRealtyObjects comrealtyobjects')
->from('ComRealtyObjectsPhones phones')
->whereIn("comrealtyobjects.id", $ids)
->whereIn("phones.id_object", $ids);
echo($dql->getSqlQuery());
?>

但是 DQL 解析器给了我这个结果:
DELETE FROM `com_realty_objects_phones`, `ComRealty_objects` 
WHERE (`id` IN (?) AND `id_object` IN (?))

搜索谷歌和堆栈溢出我发现了这个(有用的)主题:
What is the syntax for a multi-table delete on a MySQL database using Doctrine?
但这不完全是我的情况 - 从单个表中删除。

如果有办法覆盖 DQL 解析器行为?或者是否有其他方法可以使用 Doctrine 从多个表中删除记录?

注意:如果您使用的是 Doctrine 行为(Doctrine_Record_Generator),您首先需要使用 Doctrine_Core::initializeModels() 来初始化这些表。对它们执行 DQL 操作。

最佳答案

尝试:

$dql = Doctrine_Query::create()
->from('ComRealtyObjects comrealtyobjects')
->from('ComRealtyObjectsPhones phones')
->whereIn("comrealtyobjects.id", $ids)
->whereIn("phones.id_object", $ids);
$result= $dql->execute();
$result->delete();

告诉我进展如何

关于doctrine - DQL 从多个表中删除( Doctrine ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3022511/

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