Typo3 10.4.9 / Exbase:DataMapper 通过使用自己的 class extends tt_address 交付具有 empty/null 属性的对象数组
Typo3 10.4.9 / Exbase: DataMapper delievers object array with empty/null properties by using a own class extends tt_address
我在我的扩展中使用数据映射器来获取我的查询生成器结果的对象数组。它在 Typo3 8.7 下工作,但在 Typo3 10.4.9 下不再工作。查询构建器提供了正确的结果。在数据映射器从查询生成器中获取我的结果后,对象数组具有正确的条目数和属性;但属性是 empty/null.
...
/**
* Datamaper
*
* @var DataMapper
* @TYPO3\CMS\Extbase\Annotation\Inject
*/
protected DataMapper $datamapper;
...
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_address');
$records = $queryBuilder
->select('tt_address.*')
->from('tt_address')
->leftJoin(
'tt_address',
'tt_content',
'content',
$queryBuilder->expr()->eq('content.tx_myext_parent', $queryBuilder->quoteIdentifier('tt_address.uid'))
)
->where(
$queryBuilder->expr()->eq('tt_address.deleted', 0),
$queryBuilder->expr()->eq('tt_address.hidden', 0)
)
->groupBy('tt_address.uid')
->execute()->fetchAll();
$result = $this->datamapper->map(\Vendor\MyExt\Domain\Model\Adresse::class, $records);
我的class:
class Adresse extends \FriendsOfTYPO3\TtAddress\Domain\Model\Address
{
...
/**
* teaser
*
* @var string
*/
protected string $teaser = '';
...
你知道我遗漏了什么或做错了什么吗?
问题是,映射自 Typo3 10.0 以来发生了变化。
可以在这里找到解决方案:
我在我的扩展中使用数据映射器来获取我的查询生成器结果的对象数组。它在 Typo3 8.7 下工作,但在 Typo3 10.4.9 下不再工作。查询构建器提供了正确的结果。在数据映射器从查询生成器中获取我的结果后,对象数组具有正确的条目数和属性;但属性是 empty/null.
...
/**
* Datamaper
*
* @var DataMapper
* @TYPO3\CMS\Extbase\Annotation\Inject
*/
protected DataMapper $datamapper;
...
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tt_address');
$records = $queryBuilder
->select('tt_address.*')
->from('tt_address')
->leftJoin(
'tt_address',
'tt_content',
'content',
$queryBuilder->expr()->eq('content.tx_myext_parent', $queryBuilder->quoteIdentifier('tt_address.uid'))
)
->where(
$queryBuilder->expr()->eq('tt_address.deleted', 0),
$queryBuilder->expr()->eq('tt_address.hidden', 0)
)
->groupBy('tt_address.uid')
->execute()->fetchAll();
$result = $this->datamapper->map(\Vendor\MyExt\Domain\Model\Adresse::class, $records);
我的class:
class Adresse extends \FriendsOfTYPO3\TtAddress\Domain\Model\Address
{
...
/**
* teaser
*
* @var string
*/
protected string $teaser = '';
...
你知道我遗漏了什么或做错了什么吗?
问题是,映射自 Typo3 10.0 以来发生了变化。 可以在这里找到解决方案: