2017-09-27 67 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