我想编写一个 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 方法是一种获取所有内容元素的方法,无论它们拥有哪个 pid。
最后我尝试将我的内容类映射到 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)
Typo 3 或 Extbase 或其他不同的东西将所有这些 where 子句添加到查询中。我只想摆脱 CType 和 pid 子句。正如我所说,我认为 Repo 中使用的方法导致忽略 pid,显然不是这样。
有人可以帮助我吗?我想要的只是一组图像内容元素。先感谢您。