Я пытаюсь реализовать doctrine2 embeddable функция для объектов значения.Doctrine embeddable
Это простой фрагмент кода, слегка модифицированный from doctrine official documentation:
/** @Entity */
class User
{
/** @Embedded(class = "Address") */
protected $address;
/** @Column(type = "string") */
protected $street;
}
/** @Embeddable */
class Address
{
/** @Column(type = "string") */
protected $street;
/** @Column(type = "string") */
protected $postalCode;
/** @Column(type = "string") */
protected $city;
/** @Column(type = "string") */
protected $country;
}
При попытке получить доступ к собственности от вложенного объекта, я получаю «не могут получить доступ защищенное свойство» ошибка - которая, как ожидается. Встраиваемые объекты должны считываться только их базовым классом сущностей и не модифицироваться, поскольку они являются неизменяемыми (согласно руководству по управлению, основанным на домене). Я не понимаю, как я могу читать их свойства, поскольку они являются частными/защищенными? Есть ли какая-либо магия PHP здесь? Я пытался использовать различные методы получения, как:
getStreet(Address $address){
$this->street = $address->street;
}
но всегда получаю ошибку, перед вызовом сохраняются и встраивание методы на экземпляре менеджера сущности.
Спасибо.
Почему бы сделать столбец/свойство улица в классе пользователя? У адреса, конечно, уже есть один. – Cerad