如何解决奏鸣曲管理中的错误?选择加入的实体时会在列表中添加额外的行
这可能是 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 举报,一经查实,本站将立刻删除。