Я пытаюсь обновить строку в объекте с помощью:Doctrine 2 с ZF2 как обновить строку
$linker = $this->getObjectManager()->getRepository('\Schema\Entity\Link')->find('link_id', 7853);
$linker->setSampleTitle($mytitle);
$linker->setSampleDesc($mydesc);
$this->getObjectManager()->merge($linker);
$this->getObjectManager()->flush();
Но я получаю: открытой транзакции требуется для этой операции.
На самом деле оба ваши 'найти () 'подходы правильные. Однако первый «запрашивает таблицу», второй «запрашивает базу данных» - так сказать ... Как указано @doeni, вы просто использовали неправильную функцию для сохранения обновленного объекта. Это 'persist()' то, что вы ищете вместо 'merge()' – Sam
Привет, правда, что я полностью удалил $ this-> getObjectManager() -> merge ($ linker); и используя метод, который я опубликовал ниже, он работал без использования 'persist' и' merge'. Я использовал только 'merge'beacause, я читал его в другом сообщении, не зная, что именно делает. Требуется ли использовать 'persist()'? – Nikitas
Да, я тоже это забыл. Обновление требует только промывки ... Сохранение не требуется, так как все это обрабатывается внутренне в случае редактирования. flush() будет записывать его в БД – Sam