Symfony 1.4 |Как я могу хранить NULL для полей DateTime? - PullRequest
1 голос
/ 03 марта 2011

Когда я пытаюсь сохранить NULL для поля DateTime, оно всегда выглядит как 0000-00-00 00:00:00. Я правильно настроил схему и базу данных, чтобы иметь возможность хранить значения NULL. (разрешено сохранять «NULL» и даже устанавливать значение по умолчанию для этих полей даты и времени в NULL).

Я пытался:

1.) Подход "pre -inding" (=> в файле actions.class)

$values = $request->getParameter($form->getName());
$values['datetime_field'] = null;
$form->bind($values, $request->getFiles($form->getName()));

2.) Подход "предварительное сохранение" (=> в классе ctions.c)

if ($form->isValid())
{
    $form->getObject()->setDateTimeField(null);
    $form->save();

3.) Подход "override updateObject ()" (=> в классе форм)

public function updateObject($values = null)
{
    $object = parent::updateObject($values);
    $object->setDateTimeField(null);
    return $object;
}

Должно быть, что-то, о чем я даже не думал ... почему всегда хранится 0000-00-00 00:00:00 вместо NULL? На самом деле «ничего» не нужно хранить, чтобы СУБД могла сама обрабатывать «NULL-вставку» ...

Любая помощь / подсказка высоко ценится! :)

Ответы [ 3 ]

1 голос
/ 03 марта 2011

Используете ли вы (a) Doctrine и (b) "datetime" в качестве типа поля в вашей схеме? Попробуйте переключиться на «отметку времени» - как говорится в разделе типы данных документации Doctrine, это правильный тип для поля, в котором хранятся даты и время. Он будет сопоставлен с типом datetime MySQL в базе данных.

0 голосов
/ 03 марта 2011

Также убедитесь, что в вашей схеме SQL, т.е. в phpmyadmin, поле datetime / timestamp имеет значение NULL в столбце Default

date_time_field datetime DEFAULT NULL,

0 голосов
/ 03 марта 2011

Вы уверены, что в вашей схеме есть "notnull: false" для этого поля?

...