我试图在不更改密码的情况下更新symfony中的用户。我认为这是一个正常的程序,之前已经设置了数千次。在这里,它不会起作用。
导致错误:
An exception occurred while executing 'UPDATE sys_user SET password = ?, firstname = ?, locations = ?, locale = ?, timezone = ? WHERE id = ?' with params
我正在使用ValidationGroups,并且只设置fristname,如下所示。
$userData = $this->get('security.context')->getToken()->getUser();
//..............
$validator = $this->get('validator');
$this->error = $validator->validate($form, array('other'));
}else{
$this->error =false;
}
if ($request->getMethod() == 'POST' && count($this->error) == 0) {
$form->bind($request);
$userData->setFirstname($form->get('firstname')->getData());
$em->persist($userData);
$em->flush();
无论如何,它导致上面的错误。我想知道为什么它忽略了我的环境。我只是想更新用户的名字,我不知道为什么尝试更新所有的值。
编辑:完整错误消息(前端)
An exception occurred while executing 'UPDATE sys_user SET password = ?, firstname = ?, locations = ?, locale = ?, timezone = ? WHERE id = ?' with params [null, "testFirstname", "O:43:\"Doctrine\\Common\\Collections\\ArrayCollection\":1:{s:54:\"\u0000Doctrine\\Common\\Collections\\ArrayCollection\u0000_elements\";a:0:{}}", {}, "Africa\/Abidjan", 56]:
捕获致命错误:类别Pr \ UserBundle \ Entity \ Language的对象无法转换为/var/www/symfony/webprojekt/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php第1312行中的字符串
答案 0 :(得分:2)
在__toString()
类中添加Pr\UserBundle\Entity\Language
函数,将其转换为正确的字符串,以便在数据库中插入:
public function __toString()
{
return (string) $this->getTitle();
}
或类似的东西