Symfony2 установить значение через геттеры

Я хотел бы знать, возможно ли динамически создавать объекты и сохранять их. Например у меня

class Member {

private $adress; //OneToOne(targetEntity="Adress", inversedBy="Member", cascade={"persist", "remove"})

И класс Адресс

class Adress
private $member //...
private $city // string

Я хочу установить значения динамически. У меня есть каждое имя получателя / сеттера в строке (в этом случае Member.Adress.Cityи функция, которая работает так (упрощенно)

$data = explode('.', 'Adress.City');
$entity = Object; //Here, $entity is an empty Member
$cursor = $entity;

//-1 is to target only getters, and not setters
for($i = 0; $i < (count($data) - 1); $i++) {

$getter = 'get' . $data[$i];
$cursor = $cursor->$getter();
}

$setter = 'set' . $data[count($data) - 1];
$cursor->$setter($value);

$em->persist($entity);

К сожалению, это не работает .. Я могу только установить прямые значения, как Member.Name, но не реляционные сущности. Есть ли способ решить это? Спасибо !

0

Решение

Запустите команду symfony2 cli doctrine:generate:entities и это должно создать методы установки и получения также для отношений. И тогда вы можете использовать их в своем цикле.

0

Другие решения

Итак, я нашел решение, в основной сущности (здесь член), я обновил геттер. Я делал что-то вроде

If($this->adress == null) return new Adress()

Но он не добавил объект Adress в свойство, таким образом, работая со случайным объектом Adress. Я обновил это так:

If($this->adress == null) $this->adress = new Adress();
Return $this->adress;

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector