TYPO3 6.2 Extbase: сохраненный объект все еще изменен

это может быть простая проблема, и я просто наблюдаю за этим.

Что я хочу сделать:

У меня есть модель, и я просто создаю ее экземпляр, заполняю ее данными, а затем использую функцию добавления ($ object) моего репозитория.
Затем я вызываю менеджер постоянства, чтобы сохранить мою запись.

Весь контроллер является частью внутреннего модуля.

Я должен сохранить Руководство по входу, потому что есть перенаправление @header из-за вызова API единого входа, который перенаправляет меня обратно.

В чем проблема:

Мои отладки намекают на то, что после добавления значений к объекту свойства правильно заполнены к объекту.
После вызова функции persistAll мой объект сохраняется, но значения отображаются как «измененные».

Результат:

У меня есть пустой объект в моей таблице.

Время для некоторого кода (сокращено)

/**
* myObjectRepository
*
* @var \MyVendor\MyExt\Domain\Repository\MyObjectRepository
* @inject
*/
protected $myObjectRepository;

/**
* @var \TYPO3\CMS\Extbase\Object\ObjectManagerInterface
* @inject
*/
protected $objectManager;

/**
* @var \TYPO3\CMS\Extbase\Persistence\PersistenceManagerInterface
* @inject
*/
protected $persistenceManager;

/**
* action verify
*
* @return void
*/
public function verifyAction() {
$myObject = $this->objectManager->get('\\MyVendor\\MyExt\\Domain\\Model\\MyObject');
$myObject->setName('Nice Name');
$myObject->setAge(20);

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

Это чтобы дать представление о том, что я пытаюсь сделать.

Я немного ошеломлен этой проблемой. Нормальное поведение должно быть постоянным входом в базу данных. Может быть, это просто простая деталь.

0

Решение

та же проблема здесь! Отладка показывает, что функция persistObject вызывала функцию $ dataMap-> isPersistableProperty ($ propertyName) перед передачей данных в БД.

эта функция нуждается в TCA

/**
* Returns TRUE if the property is persistable (configured in $TCA)
*
* @param string $propertyName The property name
* @return boolean TRUE if the property is persistable (configured in $TCA)
*/
public function isPersistableProperty($propertyName) {
return isset($this->columnMaps[$propertyName]);
}

поэтому убедитесь, что ваш TCA установлен и правильно, чтобы передать свойства в БД

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]