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
Но я получаю ошибку:
Uncaught исключение "Doctrine_Exception" с сообщением "Не удалось найти класс ficha_has_tema" в...
Итак, есть ли способ сделать этот запрос, используя доктрину, не создавая класс ficha_has_tema? Мне нужно сделать СЧЕТ.
Спасибо!
1 ответ
Я предполагаю, что вы выполняете запрос 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 с чем-то вроде (никогда не пробовал лично, может потребоваться некоторая модификация)
$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));