Symfony2/学说 : load only subset of related entities

标签 symfony doctrine-orm entity

Symfony2 应用程序有一个 Job 实体,它有一个 tasks 属性,一个 Task 实体的集合。

Job->getTasks() 用于迭代给定作业的任务集合。封装在 tasks 属性中的 Task 实体被 Doctrine 延迟加载。我猜它们是在调用 getTasks() 时加载的。

删除额外的细节后,Job 实体看起来像这样:

<?php

class Job
{        
    /**
     * @var \Doctrine\Common\Collections\Collection
     * @ORM\OneToMany(targetEntity="Example\Bundle\Entity\Task\Task", mappedBy="job")
     */
    private $tasks;

    public function __construct()
    {
        $this->tasks = new \Doctrine\Common\Collections\ArrayCollection();
    }

    /**
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getTasks()
    {        
        return $this->tasks;
    }
}

对于一项工作,我经常只需要访问所有任务的一个子集(可能是 1000 个任务中的 10 个),目前通过遍历 getTasks() 并挑选出具有相关 ID 的任务来实现。

对于大型任务集合(数千、数万),从数据库加载任务集合可能需要很长时间。

我想减少访问部分任务所需的时间。为此,我可以使用自定义实体存储库按 ID 和作业检索 Task 实体。

我想知道 Symfony2 和/或 Doctrine2 的内置功能是否已经存在用于执行此操作。

我的想法是,具有相关实体集合的实体是一种常见情况(例如,博客文章和评论),并且在实体级别可能存在一些与分页相关的概念,用于仅检索相关实体的子集.

是否有满足我需要的内置 Symfony2 功能?

更新1:

理想情况下,我仍然希望能够迭代 Job->getTasks(),因为我知道它只会返回我以某种方式指定的任务子集。

最佳答案

我想你在找Extra Lazy Association .

关于Symfony2/学说 : load only subset of related entities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534514/

相关文章:

php - Symfony2 getLocal() 在加载后生命周期事件中

头文件 c++11 中的 C++ 静态常量字符串

php - Doctrine2 将不可变字段移动到单独的类中

mysql - 按周统计所有类型设备

java - 将实体的元素添加到同一实体 - @OneToMany

ios - CoreData 获取实体

apache - 无法创建缓存目录 (/vagrant/app/cache/dev)

php - DQL 与 JOIN Doctrine2 和 Symfony2

authentication - Symfony 2 身份验证与(学说)实体

php - Doctrine2 : dynamic entity associations, 多个目标实体被一个字段映射