Symfony ModelManagerException:未能创建对象
我正在使用Sonata管理包。当我提交一个创建实体表单时,如果表单有一些空字段,就会抛出ModelManagerException 我已经追踪到了首先抛出的PDO异常。引发异常是因为我的空字段获取空值,但我的表不允许空值。我不想要空字段,我想要空字符串。如何告诉Sonata管理类为没有值的字段创建带有空字符串的新实体,而不是空字符串 这是引发异常的查询:Symfony ModelManagerException:未能创建对象,symfony,sonata-admin,Symfony,Sonata Admin,我正在使用Sonata管理包。当我提交一个创建实体表单时,如果表单有一些空字段,就会抛出ModelManagerException 我已经追踪到了首先抛出的PDO异常。引发异常是因为我的空字段获取空值,但我的表不允许空值。我不想要空字段,我想要空字符串。如何告诉Sonata管理类为没有值的字段创建带有空字符串的新实体,而不是空字符串 这是引发异常的查询: INSERT INTO some_table (name, username, email) VALUES (?, ?, ?)' with p
INSERT INTO some_table (name, username, email) VALUES (?, ?, ?)' with params [null, "my name", "test@mailinator.com"]
以下是例外情况:
ModelManagerException: Failed to create object: Acme\DemoBundle\Entity\SomeEntity
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null
我尝试设置$this->name=;显式地在SomeEntity构造函数中,但它没有帮助。查询仍然具有null而不是。我尝试在我的管理类上重写getNewInstance,将name设置为value,但这也没有帮助-查询仍然使用null
奇怪的是,我可以在实体编辑表单上有空字段——实体更新很好,空字段被正确地保存到数据库中。为什么会这样
示例代码:
<?php
namespace Acme\DemoBundle\Entity
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="some_table")
*/
class SomeEntity
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=255)
*
* We can't use Assert\NotNull()
* because Admin bundle uses null values for empty fields!
*/
protected $name;
// Other fields and methods.
}
你有两个选择:
1-如果希望名称字段可以为空,则需要编辑名称注释:
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
protected $name;
2-如果创建新实例时希望名称字段仅为空字符串,则只需在entityAdmin中添加Preperist:
public function prePersist($object)
{
$object->setName('');
}
我希望它能有所帮助:有一些DBAL异常与此相关。在symfony exception页面上向下滚动,您将看到它。Hi,您能否在Resources/config/doctor/中添加实体声明,尤其是字段名@我正在使用注释。我已经添加了实体的一部分供您查看。