我有一个Symfony2应用程序与理论作为ORM。在我的应用程序中,我有两个具有一对多关系的实体。一个实体是用户,多个实体是项目。他们的关系配置如下:
用户:
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
问题是当我试图获取用户
及其项目
的列表时,Doctrine为每个用户创建单独的查询来获取它的项目。
查询本身非常简单:
$entities = $em->getRepository('AppUserBundle:User')->findBy([], [], 30);
是否可以使用Doctrine在一个查询中自动获取用户的所有相关项?
我使用的是SF 2.7.6和条令库,版本如下:
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
您可以在存储库中创建一个执行连接的方法,以避免额外的查询。可以用自己的实现替换findBy
方法,但我更喜欢创建更具描述性的方法。
尽管Symfony文档中的示例使用DQL,但如果愿意,您可以使用QueryBuilder
。
无论如何,我不认为设置快速获取是一个好主意。
像这样的方法应该可以很好地工作:
$users = $this->getEntityManager()
->createQueryBuilder()->select('u, i') // key is to select both entities
->from('YourBundle:User', 'u')
->join('u.item', 'i')
->getQuery()->getResult();
问题内容: 我将Ebean与Play 2 Framework结合使用,并得到了两种模型:用户模型和书本模型。用户模型与书籍模型以一对多关系连接。因此,每个用户可以拥有很多书,甚至根本没有书。书籍模型本身也具有属性。现在,我想在用户模型中创建一个查询,该查询仅返回具有某些属性书的用户。例如:一个属性可能是条件,例如new或used。现在,给我所有拥有新状态书籍的用户。是否可以使用Ebean方法创建这
实现了一对多的关系,它运行良好。 我的问题是当我运行下面的查询时,如果表有100个员工行,每个员工有两个部门。数据库查询被调用了101次,因为对每个员工都是调用部门查询,要完成调用全部100行需要很长时间,有没有人可以提出替代的解决方案? 输出XML:
我在Eclipselink2.3.2中使用JPA2.0,在其中,我在产品和它们的颜色之间建立了多对多的关系。一个产品可以有多种颜色,一种颜色可以与多种产品相关联。这种关系在数据库中由三个表表示。 null 很明显,实体类有一组颜色-,它被命名为。 实体类有一组产品-,它被命名为。 我需要根据提供的与表中的颜色不匹配的从表中获取颜色列表。 对应的JPQL如下所示。 它生成以下SQL语句。 因为这将是
问题内容: 因此,我有以下实体: 因此,没有对的引用,这意味着我们具有单向一对多关系。我需要寻找一个by 和。也就是说,找到具有指定posId的供应商,然后在供应商的pos列表中找到一个pos。如何为此编写条件查询? 我尝试使用子查询。我的想法是创建一个子查询,该子查询将获取具有给定条件的a的所有内容。然后,主查询将那些中搜索的一个给定。 问题是我无法编写查询来获取s的s列表。显然,您不能编写以下
这是项目迁移 这是时间表 这样用户就可以迁移了 这是我的项目模型 这是我的时间表模型: 这是我的用户模型 现在,我从项目返回我的查询 这是可以的,但user_id用户在timesheets.user_id我不能得到它的时间表,并得到它 此控制器按时间表中的项目id返回项目和时间表,但时间表中的用户id我不知道如何将其输入系统