Symfony2: die Lehre wird nicht geladen, Verwandte Entitäten in viele-zu-viele-Beziehung
Habe ich eine viele-zu-viele-Beziehung, und wenn ich es lade ein Unternehmen, das auf der einen Seite dieser Beziehung, ich erwarte, um zu sehen, wie seine Eigenschaft der ArrayCollection Verwandte Entitäten auf der anderen Seite. Allerdings bedeutet dies nicht geschehen - die ArrayCollection geladen hat keine Elemente, während in der Datenbank kann ich sehen, die damit verbundenen Einträge. Was könnte der Grund sein?
Hier ist mein code:
Die eine Seite der relation, ConsolidatedReport Klasse:
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="P24\Response", inversedBy="consolidatedReports")
* @ORM\JoinTable(name="con_rprt_responses")
*/
private $responses;
Andere Seite der Beziehung, Reaktion Klasse:
/**
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="P24\ConsolidatedReport\ConsolidatedReport", mappedBy="responses")
*/
private $consolidatedReports;
Hier ist die Funktion, die ich ausführen, um eine Instanz der ConsolidatedReport. Diese Funktion sitzt in einem Dienst, der aufgerufen wird, von container:
/**
* Picks the consolidated report with given id.
*
* @param string $id
*
* @return ConsolidatedReport
*
* @throws NonExistentConsolidatedReportException if the survey doesn't exist
*/
public function pick($id)
{
$report = $this->repository->findOneBy(array('id' => $id));
if (!$report) {
throw new NonExistentConsolidatedReportException($id);
}
return $report;
}'
In der Datenbank, es ist "con_rprt_responses" Tabelle mit zwei Spalten "consolidated_reports_id" und "response_id". Aber im profiler sehe ich keine Abfragen an die Tabelle.
Was könnte hier schief gehen?
UPDATE:
Bitte Lesen Sie meine Antwort auf diese Frage unten, die für mich gearbeitet.
- Im profiler sehe ich keine Anfragen zu "con_rpt_responses" - Tabelle.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fügte ich
fetch="EAGER"
um die $Antworten-Eigenschaft ConsolidatedReport Klasse, und es hat funktioniert.Den code sieht nun wie folgt aus:
Weitere Infos hier:
http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-objects.html#by-eager-loading
Noch, wenn jemand weiß, warum die Erhebung der relevanten Person würde nicht laden, ohne explizite Angabe von EAGER-fetching - bitte teilen Sie Ihr wissen, es ist sehr geschätzt!
fetch="EAGER"
entschlossen Sie zu. Es ist sehr seltsam. Haben Sie jemals herauszufinden, warum eager-fetching erforderlich war?Wenn Sie angeben, die joinColumns, tut dies Ihr problem lösen?
Den *N Eigenschaften initialisiert werden, mit einer ArrayCollection.
In den Fall, Sie haben mehr dann einzelnen Abfrage abholen die gleichen Objekte mit Doctrine zu nutzen versuchen:
dazwischen, um das "vermisste" Personen. Es ist nicht die Lösung "wie Sie ist", allerdings kann Ihnen eine Idee geben, was falsch in der Kette Ihrer Abfragen.