当前位置: 首页 > 知识库问答 >
问题:

条令2/Symfony多对一获取对象

淳于熙云
2023-03-14

我有三个表/实体:

>

  • 游戏

    网站游戏

    地点

    我必须在教义2中写查询,这将使所有游戏(作为对象)可用于特定的网站(得到这个特定的网站作为对象)。唯一的关系(多对一)在表/实体SiteGame中,它包含列/对象:

    • 游戏/游戏id
    • 站点/站点id

    通常,原始SQL看起来像(并且可以工作):

    SELECT g FROM site_games s INNER JOIN games g ON g.id=s.game_id WHERE site_id='4';
    

    这是我在教义中尝试过的,但失败了:

    $qb = $this->getEntityManager()->createQueryBuilder();
    $qb->select("s.game")
                ->from("MyBundle:SiteGame","s")
                ->where("s.site = :site")
                ->setParameter("site",$site);
    

    错误:路径表达式无效。必须是StateFieldPathExpression。

    $qb = $this->getEntityManager()->createQueryBuilder();
    $qb->select("g")
                ->from("MyBundle:SiteGame","s")
                ->join("s.game","g")
                ->where("s.site = :site")
                ->setParameter("site",$site);
    

    错误:如果不选择至少一个根实体别名,则无法通过标识变量选择实体。

    还有许多有类似错误的不同组合。

    我在整个互联网上找不到任何有用的东西。

  • 共有1个答案

    司空鸿禧
    2023-03-14

    我假设Games实体没有一个返回SiteGamesOneTo多关系。您有几个选项:

    >

  • 如果SiteGames没有任何其他属性,只是游戏站点,您可以完全删除该实体,并使用适当的ManyToMore映射
  • 添加一个映射到游戏
  • 在原则2.4中,您可以使用任意连接语法,并编写如下内容:

    $this->getEntityManager()->createQueryBuilder()
        ->select('Game')
        ->from('MyBundle:Game', 'Game')
        ->join('MyBundle:SiteGame', 'SiteGame', 'WITH', 'SiteGame.game = Game AND SiteGame.site = :site')
        ->setParameter('site', $site)
        ->getQuery()
        ->getResult();
    

    我会选择第一个选项。

  •  类似资料:
    • 我有一个Symfony2应用程序与理论作为ORM。在我的应用程序中,我有两个具有一对多关系的实体。一个实体是用户,多个实体是项目。他们的关系配置如下: 用户: 项目: 问题是当我试图获取及其的列表时,Doctrine为每个用户创建单独的查询来获取它的项目。 查询本身非常简单: 是否可以使用Doctrine在一个查询中自动获取用户的所有相关项? 我使用的是SF 2.7.6和条令库,版本如下:

    • 问题内容: hibernate映射中的默认访存类型是什么? 探索之后我知道的是: 渴望 一对一。 对于一对多来说,这是 懒惰的 。 但是在Eclipse中对其进行测试后,它对所有人都非常渴望。 是否取决于我使用的是JPA还是Hibernate? 问题答案: 这取决于您使用的是JPA还是Hibernate。 根据JPA 2.0规范,默认值为: hibernate的时候,一切都是懒惰的 更新: 最新版

    • 问题内容: 我正在使用Symfony 2开发一个项目,我已经建立了一个捆绑包来处理我的所有数据库服务,这些服务来回传递JSON数据。 我的问题/问题: 是否可以发布简单的JSON对象?目前,我通过给对象起一个名字来欺骗我的ajax调用的普通表单帖子,如果我不给它起一个名字,我似乎无法从Symfony请求对象中获取数据。 我希望能够使用一个服务包来处理来自AJAX调用或常规Symfony形式的数据。

    • 我试图为父对象创建一个NamedQuery,它从数据库中检索所有可用的父对象,并有条件地在同一个查询中获取一些子对象。例如,查询应该检索所有父对象,并获取每个父对象的年=2012的子对象。不应该获取其余的子对象。我试图用左连接FETCH来玩,但结果是一些父对象也被排除在外。但话说回来,我是FETCH语句的新手。 有没有办法完成上述任务?非常感谢您的帮助。我的父对象的相关代码如下所示:

    • 我正在使用hibernate在car和person表之间进行一对一映射。但一个人可能有车,也可能没有车。现在,在使用hibernate标准从person表中获取记录时,我只想获取那些拥有汽车的人,即person表中存在相应汽车表条目的条目。如何使用hibernate标准/别名实现这一点? 下面是一段代码。请提供获取结果所需的条件或别名:

    • 根据这篇文章,我正在尝试反序列化与JooQ的一对多关联(没有代码生成)。 这是我的目标课程。 我的JooQ查询如下: 方法无法按预期工作。生成的SQL语句如下所示: 翻译后的postgres查询没有正确替换的key属性,这会导致SQL异常。 PS:我正在使用JooQ 3.14.0和postgres 11.5