TYPO3 6.2 Extbase:仍然修改了持久对象

时间:2014-09-27 16:27:46

标签: php persistence typo3 extbase

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

我想做什么:

我有一个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();
}

这是为了说明我尝试做的事情。

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

1 个答案:

答案 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