2016-04-01 13 views
1

Итак, есть форма и необязательные поля, например, «first_name». Когда я покидаю это поле пустым, у меня возникла ошибка: «Столбец« first_name »не может быть« null », потому что на самом деле он не может. Но почему Doctrine преобразует пустую строку в NULL?Doctrine/Symfony «переводит» пустую строку в NULL

Но у меня есть на вопросы относительно этого:

  1. Возможно ли это, чтобы вывести его из строя?

  2. Что вы думаете об этом? До сих пор я привык к тому, что, когда поле формы пустое, я просто ввел пустую строку. Не NULL o_O Но ... кто-то сказал мне, что это принцип, которому мы должны следовать. Для меня, однако, NULL означает «нет значения», а «(пустая строка) означает что-то другое -« есть значение, но оно пусто ». Как вы думаете?

p.s. Я использую MySql, если это имеет значение.

редактировать:

есть аналогичный вопрос:

Symfony2 forms interpret blank strings as nulls но, возможно, это новое решение в 2016 г.?

Единственное решение, которое работа является одним из принятого ответа:

Или otherway, когда у вас есть функция setRecap вы можете проверить, если пустой или не установлен и установить значение, которое вы ожидаете.

public function setRecap($recap) { 
    if(!isset($recap)) { 
    $this->recap = '' 
    } else { 
    $this->recap = $recap; 
    } 
} 

Но у меня есть много таких полей, и это кажется излишним для меня, там должен быть более простым решением.

p.s. Я не пробовал ответить Томасу Деко ниже принятого ответа, потому что это кажется мне взломанным.

ответ

1

Ну, как кто-то предложил мне, это так просто, как:

public function setUserName($userName) { 
    $this->userName = (string)$userName; 
    return $this; 
} 

В сущности.

Edit: плюс, мы должны дать значение по умолчанию для переменной, например:

$userName = ''; 
1

Честно говоря, было бы лучше, чтобы NULL значения для первых имен в БД. Выполнение того, что вы сделали, только усложняет ситуацию.

Symfony разработан профессионалами, и для меня это преобразование кажется разумным, потому что пустая строка не более интересна, чем NULL.

Что вы сказали выше, что NULL и пустые строки - это две разные вещи, это правда в некотором смысле, но что значит иметь пустое имя (т. Е. Пустую строку)? Разве не лучше сказать, что у этого парня нет известного имени (т. Е. NULL)?

EDIT:

В ответ на ваш первый комментарий:

Ну в таком случае, типажи в строки это правильный подход.

+1

Это мнение, по крайней мере спорно, другие люди имеют сильные чувства против использования NULLs в дБ, например: http://www.databasedesign-resource.com/null-values-in-a-database.html, но вы могут найти и другие примеры. –

+0

@ Zephyr Ну, да, это был не очень хороший пример, но бывают случаи, когда я хочу сказать «у нас нет этой информации» == NULL в отличие от «у нас есть эта информация, но она пуста» == '' (пустая строка). Но +1, потому что в случае «первого имени» вы на 100% правы. Пример, когда я не хочу, чтобы NULL был адресом, как в: Flat 104/B 24, Roberts Street - это когда кто-то живет в квартире, но если у него/нее нет номера дома. И я хочу, чтобы «плоский» столбец был пустой строкой (у нас есть эта информация), а не NULL, что всегда означало «у нас нет этой информации» для меня. –

+1

@ElzoValugi: спасибо за ссылку! –

 Смежные вопросы

  • Нет связанных вопросов^_^