Предположим, у нас есть простая сущность User, которая содержит атрибут $addresses и содержит коллекцию Address объектов. Как это сделать с помощью доктрины (doc)?
Это мой тест:
<?php
use Doctrine\ORM\Mapping\Embeddable;
use Doctrine\ORM\Mapping\Embedded;
#[Embeddable]
class Address
{
private string $name;
}
class User
{
#[Embedded(class: Address::class.'[]')]
private array $addresses;
}
В этом примере это не работает, потому что когда я получаю запись User, свойство $address представляет собой только двумерный массив, а не массив экземпляров Address.






В определении class User вот ваша ошибка.
private array $address;
Это должно быть:
private Address $address;
К сожалению, вы не можете использовать Embeddables для реализации сложных ассоциаций, и Doctrine ORM не планирует это делать.
Для этого вам придется использовать более классическую ассоциацию OneToMany Doctrine.
Это невозможно с помощью Embeddables. я отредактировал свой ответ
К сожалению, я думаю, что это была бы очень интересная функция.
Извините, но я хочу, чтобы это свойство было коллекцией или массивом объектов
Address, а не простым объектом.