У меня эта проблема У меня есть метод, повторяющийся во всех хранилищах, например, этот метод.Как расширить EntityRepository в Symfony2?
function getAllOrderedBy($column) {
$qb = $this->createQueryBuilder('ac')
->select('ac')
->orderBy('ac.' . $column);
return $qb->getQuery()->getResult();
}
Я хочу, чтобы извлечь его в другом суперкласса, OrderedRepository, например, и использовать его в качестве базового класса для всех других хранилищ.
Теперь проблема в том, как это сделать?
Я попытался создать экземпляр EntityRepository в конструкторе OrderedRepository, что-то вроде этого, но также создавал там все внутренние объекты, необходимые для других вещей, но это действительно не сработало, и я чувствовал, что это неправильно путь к следующему.
function __construct() {
parent::__construct();
$this->blabla_option = "instantiated";
}
Не могли бы вы привести пример правильно простирающийся от EntityRepository, чем этот расширенный класс может служить в качестве базового класса для других хранилищ?
P.S. Я начинаю на PHP, поэтому, пожалуйста, извините меня, если я причиняю вам свои чувства своей неосознанностью.
Catchable Fatal Error: аргумент 2 передан в OrderedRepository :: __ construct() должен быть экземпляром метаданных \ ClassMetadata, экземпляром Doctrine \ ORM \ Mapping \ ClassMetadata, указанным в ... vendor \ doctrine \ lib \ Doctrine \ ORM \ EntityManager.php on li ne 578 и определен в строке OrderedRepository.php 18 строка 18: публичная функция __construct ($ em, ClassMetadata $ class) – Monomachus
Вы должны добавить соответствующие ** ** инструкции ** поверх своего класса или набрать текст полностью квалифицированных пространств имен. Например: public function __construct ($ em, Doctrine \ ORM \ Mapping \ ClassMetadata $ class) – Florian
Да, спасибо, это сработало, хотя теперь мне нужно реализовать конструктор в каждом репозитории, который ставит перед собой первоначальную цель :( – Monomachus