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 を持つタスクを反復して選択することでアクセスしています。
大量のタスク (数千、数万) のコレクションの場合、データベースからタスク コレクションをロードするのに長い時間がかかることがあります。
タスクのサブセットにアクセスするために必要な時間を短縮したいと考えています。Task
これを行うには、カスタム エンティティ リポジトリを使用して ID とジョブでエンティティを取得します。
これを行うための Symfony2 および/または Doctrine2 の組み込み機能が既に存在するかどうかを知りたいです。
私の考えでは、関連するエンティティのコレクションを持つエンティティは一般的な状況 (ブログ投稿やコメントなど) であり、関連するエンティティのサブセットのみを取得するために、エンティティ レベルでページ付け関連の概念が存在する可能性があります。
私が必要とする組み込みの Symfony2 機能はありますか?
アップデート1:
Job->getTasks()
理想的には、何らかの形で指定したタスクのサブセットのみが返されることを知って、繰り返し処理できるようにしたいと考えています。