Подтвердить что ты не робот

Может ли doctrine2 гидратировать новый объект из массива?

Я думаю, что название спрашивает все это. Очень просто, у меня есть сущность:

class User {
    private $id;
    private $name;
    private $username;
}

со всеми соответствующими сеттерами и геттером. У меня есть массив:

array( 'name' => 'joe', 'username' => 'shmoe' );

и я хочу сделать что-то вроде этого:

Some\Unknown\Doctrine\Object::hydrateFromArray($array);

Очевидно, что создание функции для гидратации объекта будет достаточно простым, но, несомненно, у доктрины должно быть что-то для этого, чтобы выполнить это?

4b9b3361

Ответ 1

Выяснил это. Учитывая репозиторий:

//for odm
$repo->getDocumentManager()->getHydratorFactory()->hydrate($entity, $array);

Я не знаю, может ли это быть сделано для ORM, но в настоящее время я использую ODM.

Ответ 2

Как и Entities, вам нужно создать сеттеры и геттеры.

class User
{
    private $id;
    private $name;
    private $username;

    public function fromArray($array)
    {
         // Code to fill the object here.
    }
}

Также нет ничего, что говорит о том, что вы также не можете реализовать его в конструкторе. Помните, что объекты Doctrine 2 не наследуют ничего из основного класса, если вы не сделаете это самостоятельно. Он просто действует на него.