我尝试为导出制作自定义列,但我无法访问子级。有没有可能这样做?
此刻我的代码如下:
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。
答案 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