У меня есть проблема с одним из моих действий в контроллере. Я хочу изменить один единственный атрибут объекта (опубликовать дату небольшого объявления).менеджер по управлению: persist не работает, нет сообщения об ошибке
Я получаю определенное небольшое объявление из репозитория, изменяю значение атрибута, а менеджер объектов должен сохранять объект. Это отлично работает с несколькими другими атрибутами, но не с датой validTo
.
Моя проблема в том, что я не получаю сообщение об ошибке. Когда я пишу значение каждого шага в файл журнала, оно имеет правильное значение. Даже когда я получаю атрибут через $smallad->getValidTo()
после метода $em->flush()
(чтобы сократить код, я удалил все строки ведения журнала). Но я не получаю никаких изменений в базе данных, и значение не сохраняется.
Я использую этот контроллер действий для изменения некоторых значений атрибутов в нескольких других контроллерах без каких-либо проблем. И без правильного сообщения об ошибке я не знаю, с чего начать искать решение. Есть идеи?
public function extendAction($id)
{
$repository = $this->getDoctrine()->getRepository('AppBundle:SmallAd');
$smallad = $repository->findOneBy(array('id'=>$id));
$em = $this->getDoctrine()->getManager();
$date = $smallad->getValidTo()->modify('+31 days');
$smallad->setValidTo($date);
$em->persist($smallad);
$em->flush();
return new RedirectResponse($this->generateUrl('member'));
}
Просто небольшая заметка - вам не нужно 'сохраняться()' в этом случае, так как вы работаете на объекте, который уже удалось, потому что вы извлечь его с помощью 'findOneBy()' метод. Вы также можете сократить команду 'findOneBy()' с помощью '$ smalladd = $ repository-> find ($ id);', если у вас есть '$ id', определяемый как ваше основное значение« Id »на вашей сущности. –