微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

这可能是 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 举报,一经查实,本站将立刻删除。