Doctrine 1.2, выполнение запроса по таблице «многие ко многим» - PullRequest
0 голосов
/ 18 августа 2011

Я хочу сделать запрос к автоматически сгенерированной таблице в 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

Но я получаю сообщение об ошибке:

Uncaught исключения «Doctrine_Exception» с сообщением «Не удалось найти класс ficha_has_tema» в...

Итак, есть ли способ сделать этот запрос, используя доктрину, не создавая класс ficha_has_tema?Мне нужно сделать СЧЕТ.

Спасибо!

1 Ответ

0 голосов
/ 26 августа 2011

Я предполагаю, что вы выполняете запрос 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");

, как предложено в «Использование Raw SQL с 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));
...