TYPO3 6.2 Extbase:持久化对象仍在修改中


TYPO3 6.2 Extbase: Persisted Object still Modified

这可能是一个简单的问题,我只是在监督它。

我想做什么:

我有一个Model,我只需创建它的一个实例,用Data填充它,然后使用Repository的add($object)函数。然后我打电话给persistenceManager来持久化我的条目。

整个控制器是后端模块的一部分。

我必须坚持输入手册,因为有@header重定向,因为SSO API调用会在之后将我重定向回来。

问题是什么:

我的调试提示,在向对象添加值后,Propertys会正确填充到对象中。调用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();
}

这是给我一个想法,我尝试做什么。

我对这个问题有点震惊。正常的行为应该是持久化数据库条目。也许这只是一个简单的细节监督。

这里也有同样的问题!调试显示,在将数据传递给DB之前,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已设置并正确地将属性传递给DB