gpt4 book ai didi

php - Doctrine 对一对多关系进行了多次查询

转载 作者:行者123 更新时间:2023-12-05 02:21:35 26 4
gpt4 key购买 nike

我有一个以 Doctrine 作为 ORM 的 Symfony2 应用程序。在我的应用程序中,我有两个具有一对多关系的实体。一个实体是 User,多个实体是 Item。他们的关系配置如下:

用户:

oneToMany:
items:
targetEntity: App\Bundle\ItemBundle\Entity\Item
fetch: EAGER
mappedBy: user

项目:

manyToOne:
user:
targetEntity: App\Bundle\UserBundle\Entity\User
fetch: EAGER
inversedBy: items
joinColumn:
name: user_id
referencedColumnName: id

问题是当我试图获取 Users 及其 Items 的列表时,Doctrine 为每个用户创建单独的查询以获取它的项目。

查询本身非常简单:

    $entities = $em->getRepository('AppUserBundle:User')->findBy([], [], 30);

是否可以使用 Doctrine 在一次查询中自动获取用户的所有相关项目?

我正在使用 SF 2.7.6 和 Doctrine 库版本:

doctrine/annotations                 v1.2.7  Docblock Annotations Parser
doctrine/cache v1.5.1 Caching library offering an ob...
doctrine/collections v1.3.0 Collections Abstraction library
doctrine/common v2.5.1 Common Library for Doctrine pr...
doctrine/dbal v2.5.2 Database Abstraction Layer
doctrine/doctrine-bundle 1.6.0 Symfony DoctrineBundle
doctrine/doctrine-cache-bundle 1.2.1 Symfony Bundle for Doctrine Cache
doctrine/doctrine-migrations-bundle 1.1.1 Symfony DoctrineMigrationsBundle
doctrine/inflector v1.0.1 Common String Manipulations wi...
doctrine/instantiator 1.0.5 A small, lightweight utility t...
doctrine/lexer v1.0.1 Base library for a lexer that ...
doctrine/migrations v1.1.0 Database Schema migrations usi...
doctrine/orm v2.5.1 Object-Relational-Mapper for PHP

最佳答案

无论如何,我不认为设置 eager fetch 是个好主意。

像这样的东西应该可以正常工作:

$users = $this->getEntityManager()
->createQueryBuilder()->select('u, i') // key is to select both entities
->from('YourBundle:User', 'u')
->join('u.item', 'i')
->getQuery()->getResult();

关于php - Doctrine 对一对多关系进行了多次查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33555190/

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