2017-09-27 91 views
2

我正在嘗試導出導出的自定義列,但我無法訪問子項。有沒有可能做到這一點?索納塔管理員導出帶收集字段的字段

我在這一刻的代碼如下所示:

public function getExportFields() 
{ 
    return [ 
     'ID'      => 'id', 
     'Transaction number'  => 'transactionNumber', 
     'Loan account'    => 'loan', 
     'Loan name'     => 'loan.name', 
     'Amount'     => 'amount', 
     //'Amount ($)'    => '', 
     'Transaction type'   => 'transactionCategory', 
     'Reference'     => 'transactionAssociation.cashTransaction.transactionNumber', 
     'Date'      => 'date' 
    ]; 
} 

我無法找到一個解決方案。我正在考慮使用PropertyAccess,但我不知道如何將它集成到這裏。

我使用Symfony 3.X與Sonata。

回答

1

要獲取導出中的集合記錄,您不能通過指定具有關聯的屬性直接執行此操作。爲實現此目的的解決方法,您可以使用getter函數在實體中定義新的未映射屬性,該函數將獲取所有集合詳細信息就像在你的主要實體定義新的屬性作爲

protected $cashTransactionNumber; 

public function getCashTransactionNumber() 
{ 
    $cashTransactionNumber = array(); 
    $i = 1; 
    foreach ($this->getTransactionAssociation() as $key => $transactionAssociation) { 
     $cashTransactionNumber [] = $i . 
      ') No.:' . $transactionAssociation->somemethod()->__toString()() . 
      /** Other properties */; 
     $i++; 
    } 
    return $this->cashTransactionNumber = join(' , ', $cashTransactionNumber); 
} 

然後在getExportFields()方法調用此屬性

public function getExportFields(){ 
    return array(
     'Reference'=>'cashTransactionNumber ', 
     ....// Other properties 
     ); 
} 

Reference: Exporting one to many relationship on sonata admin

+1

謝謝!現在正常工作!:) – GasKa