symfony Doctrine -- PersistentCollection / ArrayCollection -- как работать
Primary tabs
Проблема
При работе со связанными сущностями в Symfony, методы getSmth() возвращают PersistentCollection, а не ArrayCollection, несмотря на то, что в конструкторе явно указано создание объекта ArrayCollection.
Решение
Работать с объектом PersistentCollection можно с помощью тех же методов, которые и он, и объект ArrayCollection наследуют у интерфейса Collection: add(), contains(), removeElement(), getValues(), set(), toArray() и другие.
$presistentCollectionObject->getValues();
Достать объекты, хранящиеся в свойстве можно используя foreach:
foreach ($presistentCollectionObject as $obj) { dump($obj); }
Обратите внимание, что если распечатать PresistentCollection напрямую, то находящаяся внутри ArrayCollection будет пустой.
К сожалению, причина создания объекта другого класса пока не ясна.
Пример
Можно рассмотреть на примере создания связи Many To Many, Self-referencing. Создание "друзей" пользователя.
- Log in to post comments
- 3784 reads