Я использую API-платформу и столкнулся с проблемой обновления "многие-ко-многим" с пустым значением.
Вот небольшой пример:
/**
* Many Organizations have Many Followers.
* @ORM\ManyToMany(targetEntity = "App\Entity\User\User", inversedBy = "organizations")
* @ORM\JoinTable(name = "organizations_followers",
* joinColumns = {@ORM\JoinColumn(name = "organization_id", referencedColumnName = "id")},
* inverseJoinColumns = {@ORM\JoinColumn(name = "user_id", referencedColumnName = "id", unique=true)}
* )
*/
protected $followers;
/**
* @return Collection
*/
public function getFollowers(): Collection
{
return $this->followers;
}
/**
* @param array $followers
*/
public function setFollowers(array $followers): void
{
$this->followers = $followers;
}
/**
* Organization constructor.
*/
public function __construct()
{
$this->id = Uuid::uuid4();
$this->followers = new ArrayCollection();
}
Итак, когда я пытаюсь удалить всех подписчиков (запрос PATCH с пустыми подписчиками в поле отношений), я всегда получаю одну неудаленную запись. Что я делаю неправильно? Любые идеи?





Обычно с отношением
toManyвы должны использовать функцииadd*иremove*вместоset*. Вы пробовали это? Не знаю, как API-платформа выполняет гидратацию, но в случае, если это не работает должным образом, вам, возможно, придется поискать, как создать свою собственную «стратегию» для гидратации и / или создания ссылки на коллекцию.