Как отключить неявное усечение строки в сущности doctrine2 для максимальной длины строки?

Используя dontrine2, у меня есть объект, имеющий свойство со следующими аннотациями:

/**
* @var string
* @Column(type="string", length=4, nullable=false)
*/
protected $someProperty;

Теперь, когда свойство установлено на foobarвместо получения исключения строка обрезается до первых четырех символов, т.е. foob который затем сохраняется в базе данных.

Я знаю, что мог бы реализовать проверку длины в сеттере. Тем не менее, тогда я настраивал бы длину строки в двух местах, которых я предпочитаю избегать.

Я также мог бы использовать проверку, но это также удвоило бы конфигурацию.

Меня смущает, что doctrine2 неявно укорачивает строку, но при установке значения в null когда nullable ложно, я получаю исключение. Это кажется противоречивым.

Можно ли отключить обрезку и вызвать исключение? Или я должен сам проверить сущность?

0

Решение

Doctrine не проверяет и не усекает строки. Все исключения, которые вы получаете, происходят из слоя базы данных.

При попытке вставить нулевое значение в столбец, который не может быть пустым, запрос к базе данных завершается неудачно.

Когда вы пытаетесь вставить строковое значение длиннее длины, определенной в определении столбца, MySql автоматически обрезает его. Вы можете изменить это поведение, настроив MySql для использования режима STRICT.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]