奏鸣曲管理中的错误?选择加入的实体时会在列表中添加额外的行

问题描述

这可能是 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;
}

上面给出了我想要的 sqlsql 本身返回的数据如上所示,但 Sonata Admin 列表视图显示如下:

| a.id | b.id | b.a_id |
| 1    |      |        |
|      | 1    | 1      |
| 2    |      |        |
|      | 2    | 2      |
|      | 3    | 2      |

因此,我似乎为每个没有 B 关联的 A 实体获得了额外的一行,然后是没有来自 A 实体的任何值的 B 实体。

为什么会这样?这是一个错误吗?我该如何解决

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)