mysql varchar not null

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
NEW_NAME
Сообщения: 216
Зарегистрирован: 2013.07.15, 09:52

mysql varchar not null

Сообщение NEW_NAME »

Может это в mysql ошибка конечно.
Суть в том, что varchar not null в mysql проходит прекрасно "", то есть пустая строка не null.
Gii же при генерации модели что-то добавил в rules, что сохранить пустую строку в такое поле нельзя, ошибка : [поле] cannot be blank.
апд: required оно было. Убрал просто. Хотя если кто-то null туда передаст, то отвергнет уже на уровне mysql.
lancedevnull
Сообщения: 1268
Зарегистрирован: 2013.07.17, 17:37

Re: mysql varchar not null

Сообщение lancedevnull »

отсыпь О_о
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: mysql varchar not null

Сообщение anton44eg »

NEW_NAME
Сообщения: 216
Зарегистрирован: 2013.07.15, 09:52

Re: mysql varchar not null

Сообщение NEW_NAME »

anton44eg писал(а):http://habrahabr.ru/post/166411/
Я почитаю на досуге. Но можно сразу сказать, что именно я оттуда должен почерпнуть в связи с темой?
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: mysql varchar not null

Сообщение anton44eg »

То, что можно заставить mysql вести себя по разному. В чем именно проблема у вас?
NEW_NAME
Сообщения: 216
Зарегистрирован: 2013.07.15, 09:52

Re: mysql varchar not null

Сообщение NEW_NAME »

Я же описал. Нужно сделать запись пустой строки в varchar not null. Пришлось убрать из рулсов реквайред на это поле, надеюсь не отразится в будущем. Можно конечно свой валидатор написать который в случае если пустая строка говорит ок, а в случае если что-то другое посылает реквайреду. Но мне это пока не принципиально. Просто нашел то, что мне показалось ошибкой и подметил.
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: mysql varchar not null

Сообщение anton44eg »

Если у вас незаполненное поле - как раз и прийдет пустая строка. Логично же все.
Аватара пользователя
futbolim
Сообщения: 2051
Зарегистрирован: 2012.07.08, 19:28

Re: mysql varchar not null

Сообщение futbolim »

lancedevnull писал(а):отсыпь О_о
lancecoder, ты ?
NEW_NAME
Сообщения: 216
Зарегистрирован: 2013.07.15, 09:52

Re: mysql varchar not null

Сообщение NEW_NAME »

anton44eg писал(а):Если у вас незаполненное поле - как раз и прийдет пустая строка. Логично же все.
Тогда, если поведение mysql описанное мной является стандартным, на такое поле, как в теме разговора, gii должен ставить другой валидатор.
Вот, почему я в этом разделе и написал.
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: mysql varchar not null

Сообщение anton44eg »

Какой валидатор, предложите. Логика какая - в БД not null - значит обязательно нужно значение. Пользователь оставил поле пустым - пришла пустая строка, значит не ввел. Поэтому не пропускает. Ну и генерация моделей - дело такое. Всегда можно или свой генератор, или исправить под себя то, что вам не нравится.
NEW_NAME
Сообщения: 216
Зарегистрирован: 2013.07.15, 09:52

Re: mysql varchar not null

Сообщение NEW_NAME »

Я пытаюсь донести одну вещь. Может в этот раз получится:
Пользователь оставил поле пустым - пришла пустая строка, значит не ввел. Поэтому не пропускает.
MySQL то пропускает пустую строку без проблем. Про что, я и говорю. Разве не логично, если БД пропускает, то и фреймворк должен пропускать. То есть не strlen($model->field)!=0 из правильного валидатора в случае, описанном мной должно получаться, a typeof($model->field) == 'String'
Аватара пользователя
TranceSmile
Сообщения: 562
Зарегистрирован: 2011.06.27, 19:04
Откуда: Украина
Контактная информация:

Re: mysql varchar not null

Сообщение TranceSmile »

NEW_NAME писал(а):Я пытаюсь донести одну вещь. Может в этот раз получится:
Пользователь оставил поле пустым - пришла пустая строка, значит не ввел. Поэтому не пропускает.
MySQL то пропускает пустую строку без проблем. Про что, я и говорю. Разве не логично, если БД пропускает, то и фреймворк должен пропускать. То есть не strlen($model->field)!=0 из правильного валидатора в случае, описанном мной должно получаться, a typeof($model->field) == 'String'
strlen($model->field)!=0 ?! Да Вам уважаемый РНР надо получить.
Изображение
Ответить