没有注册类型的转换器

问题描述 投票:1回答:1

对于同样的情况,我有另一个错误:

没有为“public.group”类型注册转换器,

我有,用户,组和user_group表。

    $sql = <<<SQL
        SELECT :projection
        FROM "user"
        LEFT JOIN user_group ON "user".id=user_group.user_id
        LEFT JOIN "group" ON "group".id=user_group.group_id
        WHERE "user".id = $*
        GROUP BY "user".id

SQL;

    $projection = $this->createProjection()
        ->setField('groups', 'array_agg("group") AS groups', 'public.group[]')
    ;
    $sql = strtr($sql, [':projection' => (string) $projection->formatFields('"user"')]);

    return $this->query($sql, [1], $projection);

在services.yaml中:

App\Infrastructure\Model\MyDB\PublicSchema\GroupModel:
    tags: [pomm.model]

App\Infrastructure\Model\MyDB\PublicSchema\UserGroupModel:
    tags: [pomm.model]

App\Infrastructure\Model\MyDB\PublicSchema\UserModel:
    tags: [pomm.model]
converter pomm
1个回答
1
投票

为避免必须为数据库的每个表注册转换器,在加载表模型类时会加载转换器。

在方法开头添加以下行应解决您的问题:

$groupModel = $this->getSession()->getModel(GroupModel::class);

这也使您无法处理group关系名称,因为它存储在模型附带的结构中。

© www.soinside.com 2019 - 2024. All rights reserved.