Symfony2应用程序有一个Job
实体,它具有tasks
属性,是Task
个实体的集合。
Job->getTasks()
用于迭代给定作业的任务集合。封装在Task
属性中的tasks
实体由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功能?
UPDATE1:
理想情况下,我希望能够继续遍历Job->getTasks()
知道它只返回我以某种方式指定的任务子集。