gpt4 book ai didi

doctrine-orm - 学说 : Is it possible to INDEX BY a related field?

转载 作者:行者123 更新时间:2023-12-03 22:46:07 25 4
gpt4 key购买 nike

我有一个 Doctrine 模型( Assignment ),它与另一个模型( Region )有多对一的关系。分配归用户所有(每个用户一次只有一个区域分配),我正在尝试使用 indexBy让用户的分配数组由分配区域的 ID 键控。但是,我只得到标准的 0..n 数字键。

当我尝试运行像 SELECT am, reg, user FROM Assignment am INDEX BY [...] JOIN am.region reg JOIN am.user user WHERE user.id = ?1 这样的 DQL 查询时, INDEX BY 的这些值都不起作用:

  • region (错误:无效的 PathExpression。必须是 StateFieldPathExpression。)
  • region_id (错误:Class ...\Assignment 没有名为 region_id 的字段或关联)
  • region.id (错误:预期的字符串结尾,得到 '.')

  • 这可能吗?如果没有,那么访问 User 的便捷方法是什么?在没有 indexBy 的区域上分配?

    最佳答案

    我今天正在处理同样的问题。幸运的是我找到了解决方案:)

    首先,您必须在 ORM 映射中声明附加列:

    Abdulklarapl\My\EntityA:
    type: entity
    table: entityA
    manyToOne:
    entityB:
    targetEntity: EntityB
    joinColumn:
    name: label_id
    referencedColumnName: id
    id:
    id:
    type: integer
    id: true
    generator:
    strategy: AUTO
    fields:
    value:
    type: text
    entityB_id:
    type: integer
    lifecycleCallbacks: { }

    请注意,我已声明 entityB_id作为 领域 + 我已经配置了 多对一通过添加 joinColumn 来建立关系条款

    所以现在你可以使用 entityB_id 作为标量值
    $doctrine->getEntityManager()->createQueryBuilder()
    ->select('c')
    ->from('AbdulklaraplMyBundle:EntityA', 'c', 'c.entityB_id')
    ->getQuery()->getResult();

    它将返回关联数组
    [
    c.entityB_id: {
    id: "",
    value: ""
    entityB_id: ""
    }
    ]

    您也可以使用 AbstractQuery::HYDRATE_ARRAY作为 getResult() 的参数- 它将返回带有数组而不是对象的关联数组

    关于doctrine-orm - 学说 : Is it possible to INDEX BY a related field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268955/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com