TYPO3 Extbase型号n:1双向

时间:2014-05-22 15:14:17

标签: model typo3 many-to-one extbase bidirectional

我有以下型号:

 FilePackage
      - ID
      - Name

 FileGroup
      - ID
      - Name
      - filePackage              

 File
      - ID 
      - Path   
      - fileGroup

如果我想获取Group i的所有文件,我目前会进行一些查询,例如。

$groups = $this->fileGroupRepository->findByPackage($package);
foreach($groups as $group){
     $files = $this->fileRepository->findByFilegroup($group);
     foreach($files as $file){
         // Handle it...
     }
}

是否可以直接访问这些?喜欢     $ groups = $ this-> fileGroupRepository-> findByPackage($ package);     foreach($ groups as $ group){          $基团 - >的GetFiles();     }

之前没有查询所有内容并直接在模板中使用

1 个答案:

答案 0 :(得分:1)

根据TCA中的配置,Extbase应该负责获取所有相关对象。

例如:

<强>文件组

'files' => array(
    'label' => 'LLL:EXT:foo_myext/Resources/Private/Language/locallang_db.xml:tx_foomyext_domain_model_filegroup.files',
    'l10n_mode' => 'exclude',
    'config' => array(
        'type' => 'group',
        'internal_type' => 'db',
        'allowed' => 'tx_foomyext_domain_model_file',
        'foreign_table' => 'tx_foomyext_domain_model_file',
        'MM' => 'tx_foomyext_filegoup_file_mm',
        'maxitems'      => 10,
        'minitems'      => 0,
        'size'      => 10,
    ),
),

文件

'filegroups' => array(
    'exclude' => 0,
    'label' => 'LLL:EXT:tw_foomyext/Resources/Private/Language/locallang_db.xml:tx_foomyext_domain_model_file.filegroups',
    'config'  => array(
        'type' => 'select',
        'foreign_table' => 'tx_foomyext_domain_model_filegroup',
        'foreign_table_where' => 'ORDER BY tx_foomyext_domain_model_filegroup.id',
        'MM' => 'tx_foomyext_filegroup_file_mm',
        'MM_opposite_field' => 'files',
        'size' => 5,
        'minitems' => 0,
        'maxitems' => 10,
    )
),

在您的模型中,这些属性应表示为ObjectStorage。

如果您选择文件组,Extbase将自动为您获取所有相关文件,您将可以访问它们。