问题描述
这可能是 Sonata Admin 包中的错误吗?
假设我有一个可以有多个 B 的实体 A。要在我的数据库中看到这个,我会写一些类似
select * from a inner join b on b.a_id = a.id;
这会给我一个结果集,其中包含每个 A 和相应的 B(如果有),例如:
| a.id | b.id | b.a_id |
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 2 | 3 | 2 |
在我的管理类中,我像这样覆盖了 createquery
函数:
public function createquery($context = 'list')
{
$query = parent::createquery($context);
$rootAlias = current($query->getRootAliases());
$query
->innerJoin('b','b','WITH',$rootAlias.'.b = b')
->addSelect('b');
return $query;
}
上面给出了我想要的 sql,sql 本身返回的数据如上所示,但 Sonata Admin 列表视图显示如下:
| a.id | b.id | b.a_id |
| 1 | | |
| | 1 | 1 |
| 2 | | |
| | 2 | 2 |
| | 3 | 2 |
因此,我似乎为每个没有 B 关联的 A 实体获得了额外的一行,然后是没有来自 A 实体的任何值的 B 实体。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)