Как при сериализации объекта с помощью JMSSerializerBundle подхватить только одну сущность из коллекции?

Используется: Symfony 4.1, FOSRestBundle, JMSSerializerBundle

Имеется сущность Article, которая имеет двустороннюю one-to-many связь с ArticleImage.

class Article
{

	private $id;

	...

	/**
	 * @ORM\OneToMany(targetEntity="ArticleImage", mappedBy="article")
	 */
	private $images;

	...
}


class ArticleImage
{

	private $id;

	private $file;

	...

	/**
	 * @ORM\ManyToOne(targetEntity="Article", inversedBy="images")
	 */
	private $article;

	private $isPreview;

	...
}


Имеется два контекста сериализации: list и detail. Как можно настроить, чтобы в контексте list в результат попадала только одна сущность ArticleImage, у которой $isPreview имеет значение true, а не вся коллекция?

Есть мысль повесить EventListener и перед сериализацией в зависимости от контекста руками удалять все лишние ArticleImage из коллекции, но что-то мне этот вариант кажется не самым оптимальным.
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
@jaxel
Проще всего сделать метод вродеgetPreview. В нём отдавать нужный элемент и его сериализовать как VirtualProperty
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы