Ошибка приведения типа TYPO3 9 LTS в поле времени mysql для ввода типа TCA / времени dbType, сохраняющего пустое поле

Я пытаюсь ввести время в TYPO3 9 LTS, работающем вместе с MySQL 5.7.24.

В ext_tables.sql поле определяется следующим образом:

some_field time default NULL

В TCA поле определяется следующим образом:

  'some_field' => [
    'exclude' => 1,
    'label' => 'Some field',
    'config' => [
      'type' => 'input',
      'dbType' => 'time',
      'eval' => 'time',
    ],
  ],

При сохранении записи в бэкэнде без ввода времени (что должно быть возможно) я получаю сообщение об ошибке:

These fields of record 1 in table "some_table" have not been saved correctly: some_field! The values might have changed due to type casting of the database.

При просмотре записи базы данных поле some_field получает значение 00:00:00 (хотя по умолчанию db - NULL).

При выборе времени запись может быть сохранена и открыта без ошибок.

Это ошибка в TYPO3 или как я могу исправить такое поведение?


person denis    schedule 10.07.2019    source источник


Ответы (2)


Это означает, что вы указали неправильный тип значения в файле ext_tables.sql. Кроме того, в TYPO3 v9 есть renderTypes. Попробуйте что-нибудь подобное:

ext_tables.sql

begin int(11) DEFAULT '0' NOT NULL

TCA

'begin' => [
   'exclude' => true,
   'label' => 'LLL:EXT:your_ext/Resources/Private/Language/locallang_db.xlf:tx_yourext_domain_model_modelname.begin',
   'config' => [
        'type' => 'input',
        'renderType' => 'inputDateTime',
         'size' => 10,
         'eval' => 'datetime',
         'default' => time()
     ],
],

Дополнительная информация!

Если вы хотите отображать время во FrontEnd, вы можете использовать что-то вроде этого

<f:format.date>{dateObject.begin}</f:format.date>

Если вы хотите изменить его внешний вид, вы также можете использовать атрибут формат:

<f:format.date format="%d. %B %Y">{dateObject.begin}</f:format.date>

Подробнее об этом здесь: Формат даты TYPO3

person Aristeidis Karavas    schedule 10.07.2019
comment
Я хочу использовать тип времени, и TYPO3 поддерживает его с 9 LTS, как вы можете видеть здесь: docs.typo3.org/m/typo3/reference-tca/master/en-us/ColumnsConfig/ - прямо здесь - ›forge.typo3.org/issues/88712 - person denis; 10.07.2019
comment
затем внимательно прочтите, что говорится в документации prntscr.com/od17gc - person Aristeidis Karavas; 10.07.2019
comment
Я не знаю, что вы пытаетесь мне объяснить. Недвижимость установлена. В документации говорится о том, когда это свойство не установлено. - person denis; 11.07.2019
comment
что, если вы добавите int в eval? чтобы выглядеть так: 'eval' = ›'time, int', - person Aristeidis Karavas; 01.08.2019

Ошибка может быть решена с помощью следующего eval:

'eval' => 'time,null',
person denis    schedule 22.08.2019
comment
В документацию добавлено решение, упомянутое выше. - person denis; 11.03.2020