我使用Sonata Admin
束。当我提交“创建实体”表单时,如果表单有一些空字段,则会抛出ModelManagerException
。ModelManagerException:无法创建对象
我跟踪下来到首先抛出的PDOException
。抛出异常是因为我的空字段得到空值,但我的表不允许空值。我不想有空字段,我想要空字符串。如何告诉Sonata Admin
类为空字符串创建新实体,而不是为没有值的字段创建空值?
这是抛出异常的查询:
INSERT INTO some_table (name, username, email) VALUES (?, ?, ?)' with params [null, "my name", "[email protected]"]
这些是例外:
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
我试着在SomeEntity
构造设置$this->name = '';
明确,但它并没有帮助。查询仍然有null
而不是''
。我想在我的Admin
类设置name
到''
值覆盖getNewInstance()
,但它并没有帮助 - 询问仍有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.
}
嗨,你可以添加你的实体的声明在资源/配置/学说“some_table”,特别是场“名”/..? – Aximem 2014-10-31 08:16:10
@sAr我正在使用注释。我已添加实体的一部分供您查看。 – SiliconMind 2014-10-31 11:26:02