Codeigniter 原则1.2,在多对多表上运行查询

Codeigniter 原则1.2,在多对多表上运行查询,codeigniter,many-to-many,doctrine-1.2,Codeigniter,Many To Many,Doctrine 1.2,我想根据原则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”,消息为“找不到” 班上的学生在 那么,有没有一种方法可以在不创建ficha_has

我想根据原则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”,消息为“找不到” 班上的学生在

那么,有没有一种方法可以在不创建ficha_has_tema类的情况下使用条令进行此查询?我需要清点一下


谢谢

我假设您正在这里执行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");
如中所述

或者像从未亲自尝试过这样的东西,可能需要一些修改

$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));