【发布时间】:2021-07-02 11:08:57
【问题描述】:
我正在为一家使用 Sonata 的媒体公司构建一个非常简单的计费系统,其中包括用于向记者付款的支付实体。付款的唯一目的是导出到电子表格。我们绝不会直接编辑付款。
我的 Payment 实体中有一堆特殊的 getter,它们不直接对应于该实体的属性。像这样的东西:
public function getReporterName():string
{
return
$this->reporter->getUser()->getFirstname() .
' ' .
$this->reporter->getUser()->getLastname()
;
}
在我的 Sonata 管理类中,我告诉我的列表视图显示 reporterName 就好像它是一个属性。 Sonata 足够聪明,可以找到并使用 getter 来检索我正在寻找的字符串。没问题。
当我像这样将伪字段名称添加到 configureDatagridFilters() 方法中时,问题就出现了:
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('id')
->add('paymentComplete')
->add('reporterName')
;
}
现在我在尝试导出电子表格时收到一条令人讨厌的消息,说:
找不到属性的元数据
AppBundle\Entity\Payment::$reporterName。请确保您的 教义映射已正确配置。
有没有办法做我想做的事情?或者我是否只需将其吸收并复制数据库中的一些数据才能使我的导出工作?
如果有帮助,我将在此重申,我们仅需要此实体来导出到电子表格。它永远不会被手动编辑。
【问题讨论】:
标签: php symfony doctrine sonata-admin sonata