Я пытаюсь использовать пользовательский репозиторий для моего симфони 2.8 веб-сайт:Symfony: не может позволить пользовательский репозиторий
пользовательского хранилища:
// src/AppBundle/Entity/ExperimentationRepository
namespace AppBundle\Entity;
use Doctrine\ORM\EntityRepository;
class ExperimentationRepository extends EntityRepository
{
public function getExperimentationByUser($id){
// do stuff and return results
}
}
Entity:
// src/AppBundle/Entity/Experimentation
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Experimentation
*
* @ORM\Table(name="experimentation")
* @ORM\Entity(repositoryClass="AppBundle\Entity\ExperimentationRepository")
*/
class Experimentation{
// sutff
}
контроллер (где я пытаюсь использовать пользовательский репозиторий в другом комплекте):
// src/ManageBundle/Controller/ManageController
$em = $this->getDoctrine()->getManager();
$experimentations = $em->getRepository('AppBundle:Experimentation')->getExperimentationByUser($id);
я получил следующее сообщение об ошибке:
Undefined method 'getExperimentationByUser'. The method name must start with either findBy or findOneBy!
После некоторых исследований, я попытался проверить, если мой пользовательский репозиторий называется или нет:
$repository=$this->getDoctrine()
->getRepository('AppBundle:Experimentation');
$repositoryClass=get_class($repository);
echo $repositoryClass;
exit;
Который возвращает:
Doctrine\ORM\EntityRepository
Так что я думаю, что мой пользовательский репозиторий вообще не вызывается. Но я не могу найти, почему. Я пытался несколько действий (после некоторого копания):
- Очистить кэш (
app/console cache:clear
) - очистить кэш учение (
app/console doctrine:cache:clear-metadata
) - проверка config.yml (по учению ОРМ):
auto_mapping: true
- проверка config.yml (по учению DBAL):
type: annotation
- у меня нет какой-либо папки конфигурации/доктрины (это нормально?)
Ничего не сработало. По-прежнему такая же ошибка. Похоже, что структура полностью игнорирует аннотацию в классе сущности. Любая идея/предложение?
Благодарим за помощь!
У вас возникли сущности? – AnkiiG
Довольно загадка. У вас определен только один менеджер сущностей? Я подозреваю, что где-то просто опечатка.Доктрина приложения/консоли: сопоставление: информация выбирает объект? И да, это нормально, если config/doctrine будет пустым при использовании аннотаций. config/doctrine - это где обычно хранятся файлы отображения yaml или xml. Фактически, если бы у вас были файлы, аннотации были бы проигнорированы. – Cerad
Создаются объекты. 'app/console doctrine: mapping: info' выбирает все из них с тегом« OK ». – DavidL