Die Abfrage funktioniert gut, und in meinem alten PDO-basierten Code konnte ich verwandte Tabellenmodelle innerhalb des übergeordneten Modells verschachteln, wenn ich verknüpfte Tabellen abfrage. Mit diesem Code:Wie kann ich die Ergebniseinheit einer verknüpften Tabelle in Doctrine in eine andere Entität kapseln?
$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();
Das Schema Teil, dass diese Abfrage verwendet, ist ein ich eine parallele Beziehung erraten als Hflog, keine Beziehung zu Positionen enthält stattdessen ich einen Anschluss Tabelle verwenden, die Hflog spezifisch ist nur Standorte.
Die Lehre Annotations für HflogSwlocations:
/**
* @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;
gibt diese:
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 gehört zu HFlogs.
Ich kann bekommen, was ich brauche, aber die Art, wie die Ergebnisse zur Verfügung gestellt werden scheinen für mich nicht intuitiv. Wenn ein Hflogs ein HflogSwLocations hat, möchte ich Hflogs mit HFlogSwLocations zurückgegeben werden, die als Teil der relationalen Entität eingekapselt sind. Wie erreiche ich dies mit einer Doctrine-Abfrage?
Werfen Sie einen Blick darauf, wie Sie Links mit DQL verbinden. – Cerad