我的模型有一个名为Application的“父”实体和一个名为“role”的“子”实体,它通过ManyToOne关系连接到应用程序。
但是,出于性能原因,Application与Role没有反向的“oneToMany”关系。
我要做的是将角色实体加入应用程序的Sonata管理员列表中的应用程序实体。
我最接近的是在applicationAdmin类上使用createQuery,如下所示:
public function createQuery($context = 'list'){
$query = parent::createQuery($context);
$query
->leftJoin('fnBundle:Role','r','WITH','r.application = ' . $query->getRootAlias() . '.id')
->leftJoin('fnBundle:User','u','WITH','ar.user = u')
->addSelect('u.email');
return $query;
}
这会因以下错误而死:
“警告:get_class()期望参数1为对象,给定数组” 在“SonataAdminBundle:CRUD:base_list_field.html.twig”
中
我相信(虽然我很难证明)这是因为返回应用程序对象嵌套在一个带有两个键的数组中,如
array(0 => <Application Object>, 1 => <User Email>);
而不仅仅是应用程序对象。
那么我该如何解决这个问题呢?我可以选择u.email AS作为应用程序的属性(我不这么认为,我一直在寻找解决方案)...我应该以某种方式覆盖DataGrid,还是没有优雅的解决方案来解决这个问题?
谢谢!