我已经用谷歌搜索过,所有答案似乎都建议使用查询生成器 - 但我更愿意通过实体 API 将此值设置为 NULL(即:setUsername(null))。
但是,这样做会将值设置为空字符串而不是 NULL。
有没有办法在不诉诸实现 UPDATE 查询的情况下实现这一目标?
编辑
$em = $this->getDoctrine()->getManager();
$quote = $em->getRepository('AppBundle:Quote')->findOneByUuid($uuid);
if (null !== $quote) {
$quote->setUuid(null); // *** SET EMPTY STRING NOT RDBMS NULL ***
$em->persist($quote);
$em->flush();
return $this->render('quote/thanks.html.twig');
}
实体
/**
* @ORMColumn(type="string", unique=true, length=36, nullable=false)
*/
private $uuid;
您应该在实体上将 nullable 设置为 true
:
/**
* @ORMColumn(type="string", unique=true, length=36, nullable=true)
*/
private $uuid;
之后,您应该运行此教义命令:
php bin/console doctrine:schema:update --force
在您的数据库中,如果列的默认值设置为空字符串,并且您将值从 doctrine 设置为 null,它将值设置为空字符串而不是空