我想编写一个Extbase后端模块,它需要一个从tt_content生成的所有对象的列表,CType ='image'。
现在我开始定义一个简单的模型
class Tx_Myextension_Domain_Model_Content extends Tx_Extbase_DomainObject_AbstractEntity
{
/**
* @var string
*/
protected $header;
/**
* @return the $header
*/
public function getHeader()
{
return $this->header;
}
/**
* @param string $header
*/
public function setHeader($header)
{
$this->header = $header;
}
}
和存储库
class Tx_Myextension_Domain_Repository_ContentRepository extends Tx_Extbase_Persistence_Repository
{
public function initializeObject()
{
$querySettings = $this->objectManager->create('Tx_Extbase_Persistence_Typo3QuerySettings');
$querySettings->setRespectStoragePage(FALSE);
$this->setDefaultQuerySettings($querySettings);
}
}
据我所知,initializeObject方法是一种获取所有内容元素的方法,无论它们具有哪种内容。
最后我尝试在tt_content上映射我的内容类:
plugin.tx_myextension {
persistence {
classes {
Tx_Myextension_Domain_Model_Content {
mapping {
tableName = tt_content
recordType = Tx_Myextension_Domain_Model_Content
columns {
header.mapOnProperty = header
}
}
}
}
}
}
module.tx_myextension {
persistence < plugin.tx_myextension.persistence
}
不,我想使用回购。例如countAll。不幸的是它总是返回0.寻找MySQL查询发现问题:
SELECT COUNT(*)
FROM tt_content
WHERE (tt_content.CType='Tx_Myextension_Domain_Model_Content')
AND tt_content.deleted=0 AND tt_content.hidden=0
AND (tt_content.starttime<=1313073660)
AND (tt_content.endtime=0 OR tt_content.endtime>1313073660)
AND tt_content.sys_language_uid IN (0,-1)
AND tt_content.pid IN (0)
错字3或Extbase或其他不同的东西将所有这些添加到查询的子句中。我只是想摆脱CType和pid条款。正如我所说,我认为Repo中使用的方法导致忽略了pid,显然不是这样。
有人能帮助我吗?我想要的只是一组图像内容元素。提前谢谢。
答案 0 :(得分:1)
迟到的回答:你很可能想打电话
query->getQuerySettings()
->setRespectEnableFields(FALSE)
->setRespectSysLanguage(FALSE);
您的查询。您可以对存储库的initializeObject
方法中的所有查询禁用它:
$querySettings = $this->objectManager->create('Tx_Extbase_Persistence_Typo3QuerySettings');
$querySettings
->setRespectStoragePage(FALSE)
->setRespectEnableFields(FALSE)
->setRespectSysLanguage(FALSE);
$this->setDefaultQuerySettings($querySettings);
请参阅:TYPO 3 API docs
答案 1 :(得分:0)
尝试从持久性定义中删除节点“recordType”。