fromArray, объединить в Doctrine2 - PullRequest
1 голос
/ 19 мая 2011

У меня есть простая таблица с некоторыми полями: id, name .... Она появится в сетке в браузере, и пользователь сможет добавлять / редактировать записи.Вот почему в действии сохранения я дам массив с записями, где id новых записей - отрицательное число, например:

array[0] = {"id" => "-1", "name" => "New record 1"}
array[1] = {"id" => "-2", "name" => "New record 2"}
array[2] = {"id" => "1", "name" => "Exist record 1"}
array[3] = {"id" => "2", "name" => "Exist record 2"}

В доктрине 1 я использовал это:

if (array[x]["id"] < 0) {
  $record = new $MyRecord();
  $record->fromArray(array[x]);
} else {
  $record = Doctrine::getTable($MyRecord)->find(array[x]["id"]);
  $record->merge(array[x]);
}

, но какя могу сделать это в D2?

1 Ответ

3 голосов
/ 19 мая 2011

В моем коде, где я создаю / обновляю, я обычно передаю массив, затем зацикливаю его, присваивая каждую переменную-член класса.Или, если есть что-то более конкретное, что мне нужно сделать, я просто вручную присваиваю каждое значение из массива переменным члена класса.Доктрина 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);
}

Второй пример с циклом будет работать, только если вы знаете, что ваша сущность нене имеет ссылок на другие объекты (как в первом примере, где у страницы есть сайт).

...