Typo3 (7.6.14) Extbase: новое свойство не сохранено в базе данных

Мне нужно было новое поле "json" для моего расширения, поэтому я добавил новое поле "json" (mediumtext) в базу данных, а затем добавил следующий код в мою модель:

/**
 * json
 *
 * @var string
 */
protected $json = '';

/**
 * Returns the json
 *
 * @return string $json
 */
public function getJson()
{
    return $this->json;
}

/**
 * Sets the json
 *
 * @param string $json
 * @return void
 */
public function setJson($json)
{
    $this->json = $json;
}

Но когда я устанавливаю свойство с помощью $myObject->setJson("12345678910"), добавляю объект в хранилище и сохраняю его

$this->myObjectRepository->add($myObject);
$this->persistenceManager->persistAll();

Все остальные свойства сохранены, кроме свойства json (вызывается setter).

Я также попытался отобразить свойство в поле базы данных в typoscript:

plugin.tx_menopur {

persistence {
  classes {
    Company\Extension\Domain\Model\MyModel {
      mapping {
        tableName = tx_extension_domain_model_mymodel
        recordType = \Company\Extension\Domain\Model\MyModel
        columns {
          json.mapOnProperty = json
        }
      }
    }  
  }
}
}

2 ответа

Спасибо, вставьте имя пользователя здесь для подсказки TCA. Теперь я добавил tx_company_domain_model_mymodel.php в...Configuration/TCA/Overrides/ со следующим содержимым:

## EXTENSION BUILDER DEFAULTS END TOKEN - Everything BEFORE this line is overwritten with the defaults of the extension builder

if (!defined('TYPO3_MODE')) {
    die ('Access denied.');
}

$temporaryColumns = array (
    'json' => array (
            'exclude' => 0,
            'label' => 'Json',
            'config' => array (
                    'type' => 'text',
            )
    ),
);

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
    'tx_extension_domain_model_mymodel',
    $temporaryColumns
);

Спасибо!

Для добавления нового свойства в расширение extbase. Вам необходимо обновить ниже трех файлов.

  • ext_tables.spl
  • Конфигурация / ТС /tx_extension_key_domain_model_model.php
  • Классы / домен / Модель /model_anme.php

Конфигурация вашей модели правильная. Пожалуйста, добавьте ниже конфигурации, если не добавлено.

Для ext_tables.spl

#
# Table structure for table 'tx_extension_key_domain_model_model'
#
CREATE TABLE tx_extension_key_domain_model_model (
   json varchar(255) DEFAULT '' NOT NULL,
)

Ваша конфигурация TCA выглядит следующим образом.

'json' => array(
    'exclude' => 0,
    'label' => 'title',
    'config' => array(
        'type' => 'input',
        'size' => 30,
        'eval' => 'trim'
    ),
),
Другие вопросы по тегам