Symfony Doctrine_Query 使用 INNER JOIN 进行 DELETE

3

我正在使用symfony+doctrine,想要执行一个带有join的删除查询。下面是我目前正在使用的代码,可以正常工作。

$sql = 'DELETE a
 FROM a
 INNER JOIN b ON a.b_id = b.id
 WHERE b.c_id = :c_id';

$pdo = Doctrine_Manager::getInstance()->getCurrentConnection()->getDbh();
$stmt = $pdo->prepare($sql);
$params = array('c_id' => $c_id);
$stmt->execute($params);

有人知道我如何使用以下方法来实现此目标:

Doctrine_Core::getTable('a')

或者

Doctrine_Query::create()->delete()->from('a')

我对两者都没有好运。

我只是不太想在我的应用程序中使用原始的SQL。

1个回答

1

类似这样的内容应该可以做到

Doctrine_Query::create()
    ->delete('a a')
    ->innerJoin('a.b b')
    ->where('b.c_id = ?', $c_id)
    ->execute()

谢谢,但我还是没有成功。也许是我的查询语句有问题,但我经常使用Doctrine_Query,所以我不这么认为:语法错误或访问违规... Doctrine_Connection-> exec('DELETE FROM player_card INNER JOIN player p2 ON p.player_id = p2.id WHERE (game_id = ?)', array('21')) - Simon Lang
其实你知道吗,我并不是非常在意这个,所以我会继续使用我的原始SQL。 - Simon Lang
1
DQL 的删除和更新操作不支持联接(http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#delete-queries)。 - Rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接