这可能是一个简单的问题,我只是监督它。
我想做什么:
我有一个Model,我只需创建一个实例,用Data填充它,然后使用我的Repository的add($ object)函数。 然后我调用persistenceManager来保留我的Entry。
整个控制器是后端模块的一部分。
我必须保留条目Manualy,因为有一个@header重定向,因为SSO API调用后来重定向我。
问题是什么:
我的调试提示,在向对象添加值后,Propertys正确地填充到了Object。 调用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 :(得分:1)
同样的问题在这里!调试显示,在将数据传递给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