В моем учебном проекте на Symfony4, между двумя Entity (Image и Gallery) имеется связь ManyToMany. Использую пакет nelmio/alice для генерации фикстур, с которыми и возникла сложность.
Для работы ManyToMany в Doctrine необходимы методы addImage() и addGallery(). На этих методах и строится вся логика галереи. Но, чтобы фикстуры отрабатывали, обязательно нужны методы setImage() и setGallery(), которые не нужны ни мне, ни Doctrine. Самое главное, что эти методы могут быть пустыми - фикстуры все равно отрабатывают корректно, важно чтобы они просто были:
// if I delete this method, the fixtures do not work - shows an error
public function setGallery(Gallery $gallery)
{
// $this->addGallery($gallery);
}
/**
* @param $gallery Gallery
*/
public function addGallery(Gallery $gallery)
{
if ($this->galleries->contains($gallery)) {
return;
}
$this->galleries->add($gallery);
$gallery->addImage($this);
}
И такая ситуация везде, где есть связь ManyToXXX - везде лишние методы для установки и чтения свойств.
Чтобы переопределить поведение генератора фикстур на использование методов add*() вместо set*(), нужно написать `Custom Accessor` (
https://github.com/nelmio/alice/blob/master/doc/ad... но я совсем не могу понять как это работает. Совсем. Руки опускаются от безисходности.
Я не думаю, что у меня уникальная ситуация - часто приходится использовать связи ManyToXXX. Пожалуйста, подскажите, как написать этот сервис.