До сих пор я использовал аннотацию групп для сериализации и заполнения моего индекса эластичного поиска, и он работал нормально, поскольку использовал только поля в группе «elastica» и только для сущностей, перечисленных в моем fos_elastica.yml. Таким образом, я мог легко контролировать, какое поле было отправлено в моем индексе, и избегать циклических ссылок.
Теперь проблема в том, что мне нужно установить некоторые отношения как «вложенные» в моем индексе, и я не мог найти, как это сделать с аннотациями групп, поэтому я решил настроить свои типы в моем fos_elastica.yml ...
Но теперь сериализатор хочет сериализовать поля, о которых я его не прошу (или, по крайней мере, я так не думаю ...)
fos_elastica:
serializer: ~
clients:
default:
url: '%elasticsearch.url%'
logger: true
indexes:
alternance:
finder: ~
use_alias: true
index_name: '%elastic_index_name%'
types:
offer:
mappings:
id: { type: integer }
name: ~
slug: ~
metaTitle: ~
metaDescription: ~
metaKeywords: ~
content: ~
duration: ~
startat: ~
keywords: ~
email: ~
wage: ~
profile: ~
premiumFlag: ~
idValid: { type: integer }
updated: ~
created: ~
levels:
type: nested
properties:
id: { type: integer }
name: ~
slug: ~
metaTitle: ~
metaDescription: ~
metaKeywords: ~
content: ~
diplomas:
type: nested
properties:
id: { type: integer }
name: ~
slug: ~
metaTitle: ~
metaDescription: ~
metaKeywords: ~
content: ~
company:
type: nested
properties:
id: { type: integer }
name: ~
slug: ~
metaTitle: ~
metaDescription: ~
metaKeywords: ~
content: ~
domains:
type: nested
properties:
id: { type: integer }
name: ~
slug: ~
metaTitle: ~
metaDescription: ~
metaKeywords: ~
content: ~
contract:
type: nested
properties:
id: { type: integer }
name: ~
slug: ~
metaTitle: ~
metaDescription: ~
metaKeywords: ~
content: ~
city:
type: nested
properties:
id: { type: integer }
name: ~
slug: ~
metaTitle: ~
metaDescription: ~
metaKeywords: ~
content: ~
county:
type: nested
properties:
id: { type: integer }
name: ~
slug: ~
metaTitle: ~
metaDescription: ~
metaKeywords: ~
content: ~
region:
type: nested
properties:
id: { type: integer }
name: ~
slug: ~
metaTitle: ~
metaDescription: ~
metaKeywords: ~
content: ~
persistence:
driver: orm
model: ModelBundle\Entity\Offer
provider: ~
Когда я запускаю bin \ console fos: elastica: populate, я получаю следующую ошибку: при сериализации объекта класса «Proxies__CG __ \ ModelBundle \ Entity \ County» была обнаружена циклическая ссылка.
Итак, я предполагаю, что он пытается сериализовать County, и обнаруживает, что существует связь OneToMany "Cities", но в моем файле конфигурации я не прошу его сериализовать поле "Cities" ??
Могу ли я заставить сериализатор игнорировать / не сериализовать циклические ссылки? Все, что я могу найти относительно обработки циклических ссылок, находится не в конфигурации entity classes / yml :(
Вот конфигурация сущностей:
//ПРЕДЛОЖЕНИЕ
/**
* @ORM\ManyToOne(targetEntity="City", inversedBy="offers")
* @ORM\JoinColumn(name="city_id", referencedColumnName="id", nullable=false)
*/
private $city;
// ГОРОД
/**
* @ORM\ManyToOne(targetEntity="ModelBundle\Entity\County", inversedBy="cities")
* @ORM\JoinColumn(name="county_id", referencedColumnName="id", nullable=false)
*/
private $county;
/**
* @ORM\OneToMany(targetEntity="ModelBundle\Entity\Offer", cascade={"remove"}, mappedBy="city", fetch="EAGER")
* @ORM\JoinColumn(onDelete="CASCADE", nullable=true)
*/
private $offers;
// ОКРУГ
/**
* @ORM\OneToMany(targetEntity="ModelBundle\Entity\City", cascade={"remove"}, mappedBy="county", fetch="EAGER")
* @ORM\JoinColumn(onDelete="CASCADE", nullable=true)
*/
private $cities;