2014-05-22 62 views
1

我有以下型號:TYPO3 Extbase型號N:1雙向

FilePackage 
     - ID 
     - Name 

FileGroup 
     - ID 
     - Name 
     - filePackage    

File 
     - ID 
     - Path 
     - fileGroup 

如果我想獲得一個組中的所有文件,我現在作出這樣的一些疑問。

$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){ $ group-> getFiles(); }

如果沒有查詢之前的一切,並直接使用它的模板

回答

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會自動獲取您的所有相關文件,您將有權訪問它們。