这可能是一个简单的问题,我只是在监督它。
我想做什么:
我有一个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