Я последовал пример настройки функции пользовательского findOneByJoinedToCategory ($ ID) в классе модели доктрины, как описано в документации здесь:Symfony2 отклоняя мою пользовательскую функцию findBy в моем классе модели
http://symfony.com/doc/current/book/doctrine.html
В мой случай, у меня есть класс модели под названием TestVendorCategory, содержащая кучу атрибутов и эту функцию:
public function findOneByNameJoinedToVendorCategoryMappings($vendorCategoryName)
{
$query = $this->getEntityManager()
->createQuery('
SELECT vc, vcm FROM TestCoreBundle:VendorCategory vc
JOIN vcm.vendorCategoryMapping vcm
WHERE vc.name = :name'
)->setParameter('name', $vendorCategoryName);
try
{
return $query->getSingleResult();
}
catch (\Doctrine\ORM\NoResultException $e)
{
return null;
}
}
В моем контроллере, я называю это так:
$vendorCategoryMapping = $this->em->getRepository("TestCoreBundle:VendorCategory")->findOneByNameJoinedToVendorCategoryMappings($vendorCategoryName);
Когда я иду в браузер и выполнить это действие с этим вызовом в нем, я получаю следующее сообщение об ошибке:
организации «Test \ CoreBundle \ Entity \ VendorCategory» имеет «nameJoinedToVendorCategoryMappings» никакого поля. Поэтому вы не можете называть «findOneByNameJoinedToVendorCategoryMappings» в репозитории сущностей
Похоже, что Symfony 2.1 хочет, чтобы методы findOneBy ...() отображали только имена существующих полей, а не специальные методы «JoinTo ...» , Мне что-то не хватает, пожалуйста? В документации показан пример, например, где он работает. Я использую аннотации, но этот метод не имеет. Спасибо!
Добро пожаловать! Я однажды забыл ссылаться на класс репозитория в сущности и задавался вопросом, почему мои пользовательские функции не работают. Вам не обязательно следить за поиском ... convention btw .. Обычно я использую getXY, чтобы отличать настраиваемые методы от стандартных. – hacfi