У меня возникла проблема с отображением настраиваемого репозитория сущностей для Entity, который расширен от другого объекта.Doctrine EntityRepository для расширенного объекта
Базовый объект:
/**
* User entity
*
* @ORM\Table(name="user")
* @ORM\Entity
*
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="user_type", type="string")
* @ORM\DiscriminatorMap({"user" = "User", "client" = "Client"})
*/
class User
{
}
Расширенная организация:
/**
* Client entity
*
* @ORM\Entity(repositoryClass="Acme\AppBundle\Entity\ClientRepository")
*/
class Client extends User
{
}
Repository:
namespace Acme\AppBundle\Entity;
use Doctrine\ORM\EntityRepository;
/**
* ClientRepository
*/
class ClientRepository extends EntityRepository
{
/*
* this method returns resultset
* its empty just for simplification
*/
public function getClientsWithActiveCampaign(\DateTimeInterface $date = null) {}
}
Вызов хранилищу:
$clients = $this->getDoctrine()->getRepository('AcmeAppBundle:Client')->getClientsWithActiveCampaign();
Но когда я звоню выборочную на ClientRepository
я получаю:
Undefined method 'getClientsWithActiveCampaign'. The method name must start with either findBy or findOneBy!
Таким образом, кажется, что доктрина не знает о моем пользовательском хранилище.
ваш класс репозитория должен быть расширен до Doctrine \ ORM \ EntityRepository. –
Вы можете показать вызов репо и голову репо (пространство имен, использование, объявление класса)? – Koalabaerchen
Всего несколько дней назад у меня возникла необходимость в этом, и у меня не было никаких проблем. Должна быть какая-то глупая ошибка ... –