Русскоязычный форум, посвященный фреймворку Kohana
http://forum.kohanaframework.su/

Самопроизвольное изменение типа данных при записи в Users ((
http://forum.kohanaframework.su/viewtopic.php?f=33&t=340
Страница 1 из 2

Автор:  bsv [ 24 авг 2012, 18:17 ]
Заголовок сообщения:  Самопроизвольное изменение типа данных при записи в Users ((

Доброго времени суток всем...
Такая проблема:
в модели Users создал дополнительное поле:
Код:
`birthDate` date DEFAULT NULL

Если данных по `birthDate` нет, то хочу записать 'NULL'...
В модели сохраняю данные:
Код:
...
$user->birthDate = ($data['birthDate']) ? $data['birthDate'] : NULL;
$user->save();
...

При проверке, что записано в переменные, вижу что в $data['birthDate'] записано Null (присваиваю в контроллере),
а в $user->birthDate записана пустая строка, т.е. тип переменной строка, а значение <''>...

Код:
$user->birthDate = ($data['birthDate'] && $data['birthDate'] != '') ? $data['birthDate'] : NULL;
echo Debug::vars($data['birthDate'], $user->birthDate);


Делая такой "контрольный" вывод(echo Debug...), вижу следующее:
Код:
NULL
string(0) ""

т.е. значение в $data NULL, а в $user УЖЕ пустая строка ((((

Подскажите почему???
полазил по моделям Users и ORM так и не нашел, где происходит изменение типа...

Автор:  Rush64 [ 24 авг 2012, 18:29 ]
Заголовок сообщения:  Re: Самопроизвольное изменение типа данных при записи в User

хм. возможно в бд нужно поставить для поля атрибут NULL ? и вообще в случае нулевого значения ОРМка может присваивать '', правда не уверен

Автор:  bsv [ 24 авг 2012, 19:18 ]
Заголовок сообщения:  Re: Самопроизвольное изменение типа данных при записи в User

Rush64 писал(а):
хм. возможно в бд нужно поставить для поля атрибут NULL ? и вообще в случае нулевого значения ОРМка может присваивать '', правда не уверен

Мона пример, как поставить атрибут NULL в БД ???

ОРМка в другой модели, созданной мной, в подобное поле другой таблицы в таком же случае пишет NULL без проблем!!!

Вот мне и не понятно, в чем разница... Где собака порылась...

Автор:  Rush64 [ 25 авг 2012, 16:20 ]
Заголовок сообщения:  Re: Самопроизвольное изменение типа данных при записи в User

зайди в pma, нажми редактировать поле и поставь галочку null

Автор:  Sergey [ 26 авг 2012, 02:49 ]
Заголовок сообщения:  Re: Самопроизвольное изменение типа данных при записи в User

учите mysql

Автор:  bsv [ 28 авг 2012, 11:24 ]
Заголовок сообщения:  Re: Самопроизвольное изменение типа данных при записи в User

Sergey писал(а):
учите mysql

читайте полностью ветку, прежде чем УЧИТЬ !!! В первом посте есть определение как задано поле...
(спасибо за совет!)

Автор:  bsv [ 28 авг 2012, 11:25 ]
Заголовок сообщения:  Re: Самопроизвольное изменение типа данных при записи в User

Rush64 писал(а):
зайди в pma, нажми редактировать поле и поставь галочку null

пользуюсь HeidiSQL, но проверил в pma - "галочка" стоит... :(

Автор:  Sergey [ 28 авг 2012, 11:43 ]
Заголовок сообщения:  Re: Самопроизвольное изменение типа данных при записи в User

bsv писал(а):
Sergey писал(а):
учите mysql

читайте полностью ветку, прежде чем УЧИТЬ !!! В первом посте есть определение как задано поле...
(спасибо за совет!)


Это ваше?
Цитата:
Мона пример, как поставить атрибут NULL в БД ???

О чём может быть речь после таких вопросов?

Автор:  Rush64 [ 28 авг 2012, 14:12 ]
Заголовок сообщения:  Re: Самопроизвольное изменение типа данных при записи в User

ладно еще вариант
$user->birthDate = ($data['birthDate']) ? $data['birthDate'] : NULL;
возможно $data['birthDate'] == '', просто пустое и записывается в базу пустая строка
может так прокатит $user->birthDate = ($data['birthDate'] && $data['birthDate'] != '') ? $data['birthDate'] : NULL;

Автор:  bsv [ 30 авг 2012, 17:37 ]
Заголовок сообщения:  Re: Самопроизвольное изменение типа данных при записи в User

Rush64 писал(а):
...
может так прокатит $user->birthDate = ($data['birthDate'] && $data['birthDate'] != '') ? $data['birthDate'] : NULL;...

в принципе при пустой строке условие проверки <($data['birthDate']) ?...> выдаст все равно ЛОЖЬ ...
проверил и предложенный вариант... все тоже самое как и было.
в модель все равно идет строковое именно пустое значение, которое потом (по типу data) пишется в базу как '0000-00-00'... :?

Страница 1 из 2 Часовой пояс: UTC + 4 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/