我有一个自定义表的扩展,其中一个我无法工作。当我尝试findOneByUid()
时,我似乎得到了正确的记录,但除了uid
和pid
之外,所有属性的值均为null
。
表的名称是:tx_myext_domain_model_advertisercategories
。我以前在广告客户和类别之间有一个下划线,但似乎这是extbase期望它的方式。
我已配置:
我已将这些文件上传到Github: https://gist.github.com/kuipersb/4a5ef7f14ecc979866ae
执行findOneByUid()
或我的自定义方法searchAdvertiser()
时获得的输出如下:
object(VENDOR\MyExt\Domain\Model\Advertisercategories)[334]
protected 'advertiserId' => null
protected 'name' => null
protected 'uniqueCode' => null
protected 'discount' => null
protected 'uid' => int 1
protected '_localizedUid' => int 1
protected '_languageUid' => null
protected 'pid' => int 2
private '_isClone' (TYPO3\CMS\Extbase\DomainObject\AbstractDomainObject) => boolean false
private '_cleanProperties' (TYPO3\CMS\Extbase\DomainObject\AbstractDomainObject) =>
array (size=6)
'advertiserId' => null
'name' => null
'uniqueCode' => null
'discount' => null
'uid' => int 1
'pid' => int 2
但我希望:
advertiserId: 2
name: Test
unique_code: test
discount: 10.00
任何帮助都非常感谢!
答案 0 :(得分:1)
您自己已经在代码中“调整”了一些内容。数据类型\string
我应该只是string
。模型\VENDOR\MyExt\Domain\Model\Advertisers
应该(通过命名约定)以单数形式命名,因此只需要\VENDOR\MyExt\Domain\Model\Advertiser
,而类的成员变量应该只是$advertiser
而不是$advertiserId
。
当您在代码中放入一个对象时,TYPO3只会将uid写入字段,因此不需要再将id
的字段命名为。
答案 1 :(得分:0)
我的问题出在ext_tables.php
。部分说:
'dynamicConfigFile' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'Configuration/TCA/Advertisers.php',
最后它不应该是Advertisers.php
,而是AdvertiserCategories.php
。一个小错字.. :))
感谢你抽出时间调查迈克尔!我附上了很多代码。
但复数与单数名称似乎没有问题。虽然下次使用单数名称会更好,但我同意你:)