Doctrine 1.2,在多对多表上运行查询

时间:2011-08-18 17:33:48

标签: codeigniter many-to-many doctrine-1.2

我想在Doctrine 1.2下的自动生成表上进行查询。在这种特殊情况下,我有以下查询:

SELECT F.id FROM ficha as F JOIN ficha_has_tema FT ON FT.ficha_id = F.id WHERE FT.tema_id = ? GROUP BY F.id HAVING COUNT(F.id) > 1

但我收到错误:

  

未捕获的异常'Doctrine_Exception',消息'找不到   class ficha_has_tema'in ...

那么,有没有办法在不创建类ficha_has_tema的情况下使用doctrine进行此查询?我需要做COUNT。

谢谢!

1 个答案:

答案 0 :(得分:0)

我假设你在这里执行DQL查询。在SQL查询中使用没有关联实体的表是不可能的。

但是,您可以使用

运行旧的SQL
$q = Doctrine_Manager::getInstance()->getCurrentConnection();
$result = $q->execute("SELECT F.id FROM ficha as F JOIN ficha_has_tema FT ON FT.ficha_id = F.id WHERE FT.tema_id = ? GROUP BY F.id HAVING COUNT(F.id) > 1");

"Using Raw SQL with Doctrine"

中所述

或者Doctrine Native SQL Support有类似的东西(从未亲自试过,可能需要进行一些修改)

$q = new Doctrine_RawSql();
$q->select("{F.id}")
  ->from("
        From ficha as F 
        JOIN ficha_has_tema FT ON FT.ficha_id = F.id 
        WHERE FT.tema_id = ? 
        GROUP BY F.id 
        HAVING COUNT(F.id) > 1"
    );

$result = $q->execute(array($tema_id));