带有集合字段的Sonata管理导出字段

时间:2017-09-27 08:15:23

标签: symfony sonata-admin

我尝试为导出制作自定义列,但我无法访问子级。有没有可能这样做?

此刻我的代码如下:

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 个答案:

答案 0 :(得分:2)

要在导出中获取集合记录,您不能通过指定具有关联的属性直接执行此操作。为实现此目的,您可以使用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