クエリはうまく機能し、古いPDOベースのコードでは、結合されたテーブルをクエリするときに、親モデル内で関連するテーブルモデルをネストすることができました。このコードを使用する:このクエリが利用するどのようにして、結合されたテーブルの結果エンティティをDoctrineの別のエンティティにカプセル化できますか?
$qry = $em->createQueryBuilder()
->select('l', 'a')
->from('AppBundle:Hflogs', 'l')
->leftJoin('AppBundle:HflogSwLocations', 'a')
->where($em->createQueryBuilder()->expr()->notIn('l.id', $sub->getDQL()))
->orderBy('l.submitted', 'DESC')
->setMaxResults(50);
$logs = $qry->getQuery()->getResult();
dump($logs); die();
スキーマの一部を、Hflogは場所に関係が含まれていないように私が代わりに私がHflogに固有のコネクタテーブルを、使用しています、平行関係を推測です場所のみ。 HflogSwlocationsため
教義のannotaions:
/**
* @var \AppBundle\Entity\Hflogs
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Hflogs")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="hflog_id", referencedColumnName="id")
* })
* @SerialGroups({"public"})
*
*/
private $hflog;
/**
* @var \AppBundle\Entity\SwLocations
*
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\SwLocations")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="sw_loc_id", referencedColumnName="id")
* })
* @SerialGroups({"public"})
*
*/
private $swLoc;
戻り、この:
array:51 [▼
0 => Hflogs {#450 ▶}
1 => HflogSwLocations {#569 ▶}
2 => HflogSwLocations {#413 ▶}
3 => HflogSwLocations {#420 ▶}
4 => HflogSwLocations {#437 ▶}
5 => HflogSwLocations {#558 ▶}
6 => HflogSwLocations {#555 ▶}
7 => HflogSwLocations {#442 ▶}
8 => HflogSwLocations {#584 ▶}
9 => HflogSwLocations {#587 ▶}
HflogSwLocations HFlogsに属します。
私は必要なものを手に入れることができますが、結果が提供される方法は私には直感的ではありません。 HflogsにHflogSwLocationsがある場合、HFlogSwLocationsを関係エンティティの一部としてカプセル化してHflogsを返すようにします。 Doctrineクエリでこれをどのように達成するのですか?
DQLで左結合を実行する方法を見てみましょう。 – Cerad