В моем коде, где я создаю / обновляю, я обычно передаю массив, затем зацикливаю его, присваивая каждую переменную-член класса.Или, если есть что-то более конкретное, что мне нужно сделать, я просто вручную присваиваю каждое значение из массива переменным члена класса.Доктрина 2 требует, чтобы вы были более четкими в том, как вы делаете некоторые вещи.Вот пример метода из класса обслуживания.
public function createPage(array $data)
{
$page = new \Entity\Page();
$page->setName($data['name']);
$page->setUrl($data['url']);
$page->setContent($data['content']);
$page->setSite($this->em->getReference('Entity\Site', $data['site']));
$this->em->persist($page);
}
Вот еще один пример с циклом:
public function createUser(array $data)
{
$user = new \Entity\User();
foreach ($data as $key => $value) {
$user->'set' . ucfirst($key)($value);
}
$this->em->persist($user);
}
Второй пример с циклом будет работать, только если вы знаете, что ваша сущность нене имеет ссылок на другие объекты (как в первом примере, где у страницы есть сайт).