Ich verwende Lehre mit Symfony2 Framework. Ich habe eine Entität "Frage", die mehrere "Themen" haben kann. So definiert ich diese many-to-may-Beziehung (auch auf der anderen Seite Themes können mehrere Fragen haben) in yml:Mit Viele-zu-viele-Beziehung können die zugehörigen Klassendaten nicht mit Find-Methode in Doktrin und Symfony2 abgerufen werden.
manyToMany:
themes:
targetEntity: Theme
joinTable:
name: question_themes
joinColumns:
question_id:
referencedColumnName: id
inverseJoinColumns:
theme_id:
referencedColumnName: id
Und in der Frage Entitätsklasse:
private $themes;
public function setThemes($themes) {
$this->themes = $themes;
}
public function getThemes() {
return $this->themes;
}
Hier question_themes ist eine Tabelle (in MySQL), die die Viele-zu-Viele-Beziehung enthält, dh question_id und theme_id.
Wenn ich jetzt holen Frage Daten von:
$questions = $this->getDoctrine()->getRepository('MyBundle:Question')->findAll();
oder
$questions = $this->getDoctrine()->getRepository('MyBundle:Question')->findBy(
array('locale'=>$locale),
array('createdAt' => 'DESC')
);
usw. es holt all den damit verbundenen Themen Daten zusammen mit Fragen, dh
foreach($questions as $question) {
foreach($question->getThemes() as $theme) {
// some code
}
}
Alles scheint perfekt . Aber immer, wenn ich hole die Frage Daten von:
$question = $this->getDoctrine()->getRepository('MyBundle:Question')->find($question_id);
oder
$question = $this->getDoctrine()->getRepository('MyBundle:Question')->findById($question_id);
etc, dann den dazugehörigen Themendaten werden nicht abgerufen und damit bin ich Fehler immer bei der foreach-Schleife:
foreach($question->getThemes() as $theme) {
// some code
}
Kann mir jemand helfen, da ich neu in der Lehre und symfony2 bin?
Dank
Ich verwende Yml anstelle von Annotation, so definiert das Schema wie in der Frage. Ich habe den Entity-Getter-Setter entsprechend geändert, aber das hat mein Problem nicht gelöst. Wie kann ich jedoch gemäß Ihrer Schemadefinition die Tabelle fragment_themes angeben, die die Viele-zu-Viele-Beziehung enthält? – sumanchalki
Mit Anmerkungen basierend auf dem von mir bereitgestellten Code würde die Tabelle question_themes nach dem Aufruf von doctrine automatisch generiert: schema: update --force Siehe: http://tracehello.wordpress.com/2011/05/08/symfony2-doctrine2-manytomany- association/Wie für die Verwendung von Yml, um ehrlich zu sein, habe ich es nur in einem meiner Projekte verwendet und hatte keine viel-Beziehung. – Shattuck