Я использую пакет 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
Я попытался установить $this->name = '';
явно в SomeEntity
конструктору, но это не помогло. Запрос еще null
вместо ''
. Я попробовал переопределить getNewInstance()
на моем Admin
классе, чтобы установить name
в ''
значение, но это тоже не помогло - запрос все еще имел 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» и особенно «название» поле в Resources/конфигурации/доктриной/..? – Aximem
@sAr Я использую аннотации. Я добавил часть сущности для вас. – SiliconMind