2016-03-13 2 views
0

Я читал документацию много раз в http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html, но я до сих пор не понимаю.Какова цель постоянных объектов?

Какова цель сохранения объектов?

У меня есть следующий код

$em = $this->getDoctrine()->getManager(); 
$user = $this->container->get('security.context')->getToken()->getUser(); 
if ($user) { 
    $user->enabled(1); 
    $em->flush(); 
} 

Он работает очень хорошо.

Почему я должен добавить

$em->persist($user); 

до флеша?

+0

моя репутация была бы признательна, если бы вы могли принять мой ответ, если это действительно отвечает на ваш вопрос. – craigh

ответ

3

persisting Сущность просто означает, что менеджер объекта может управлять объектом. иначе он об этом не знает.

EDIT: если вы работаете с сущностью, которая была вытащена из диспетчера сущности для начала (в вашем случае, $user), то сохранение не требуется, потому что диспетчер объектов уже «знает» об этом. Таким образом, сохраняется только при создании экземпляра NEW.

Сущность может быть постоянной, передав ее методу EntityManager # persist ($ entity). Применяя операцию persist на каком-либо объекте, этот объект становится MANAGED, а это означает, что его постоянство отныне управляется EntityManager. В результате постоянное состояние такого объекта впоследствии будет правильно синхронизироваться с базой данных при вызове EntityManager # flush().

http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html#persisting-entities

Смежные вопросы