У меня есть несколько разных доктринных объектов, реализующих общий интерфейс, и я хочу (в идеале) создать репозиторий в доктрине, который позволяет мне запрашивать с упорядочением/разбиением на страницы по всем этим объектам (объединение в простом SQL). Объекты не наследуются от общего базового класса.Репозиторий Doctrine для объектов, реализующих общий интерфейс
В частности, интерфейс позволяет объекту использовать в качестве метки:
interface My\TaggableInterface
{
// get object UUID
public function getObjectIdentity(): string
// get the tag text
public function getTagString(): string
}
class My\Entity implements My\TaggableInterface
class My\Other\Entity implements My\TaggableInterface
Я надеялся создать пользовательское хранилище, управляемое объединение, так что я мог бы написать:
$entityManager()->getRepository('My\\TaggableInterface')
->findBy(
//criteria
)`
Но похоже, не существует способа создать временную таблицу из интерфейса или support for union in the doctrine query builder. Я хочу избежать использования собственного (My) SQL, если это возможно, но я не вижу, как это сделать с помощью Doctrine?
Большое спасибо.
Невозможно предоставить репозитории между объектами в Доктрине. Вы можете создать настраиваемый репозиторий для каждого объекта, а затем реализовать свой материал с тэгами через либо свойство, либо базовый репозиторий. – Cerad