Hallo zusammen,
vielleicht hat der ein oder andere hier ja schon Erfahrungen mit Doctrine 2 gesammelt. Ich versuche mich gerade daran und es klappt auch alles soweit ganz gut, nur bei den ManyToMany-Relations habe ich noch ein Problem.
Ich führe folgenden Code aus:
Beim ersten mal funktioniert das ganze noch prima. In der Verknüpfungstabelle steht dann z.B. folgendes drin:
Füge ich eine weitere Vokabel hinzu, schau das ganze allerdings so aus:
Er fügt die bereits vorhandenen Verknüpfungen ein weiteres mal ein.
Da das ganze wohl so nicht geplant ist und es sich um ein ziemlich offensichtliches Problem ist, gehe ich stark davon aus, dass der Fehler bei mir liegt.
Die Entities sehen so aus:
(Die / sollen \ sein, aber die stellt das Forum leider nicht dar.)
Hat irgendjemand vielleicht eine Idee, wo ich den Fehler mache? Google habe ich bereits ohne großen Erfolg angeschmissen und die offizielle Dokumentation hilft mir auch nicht weiter (oder ich hab einfach Tomaten auf den Augen).
Viele Grüße
Melkor
vielleicht hat der ein oder andere hier ja schon Erfahrungen mit Doctrine 2 gesammelt. Ich versuche mich gerade daran und es klappt auch alles soweit ganz gut, nur bei den ManyToMany-Relations habe ich noch ein Problem.
Ich führe folgenden Code aus:
PHP-Code:
$phrase = $em->getRepository('Phrase')->findOneById(1);
$vocable = $em->getRepository('Vocable')->findOneById($id);
$vocable->getPhrases()->add($phrase);
$phrase->getVocables()->add($vocable);
$em->persist($phrase);
$em->flush();
Code:
voc_id | phrase_id -------------------- 5 | 1
Code:
voc_id | phrase_id -------------------- 5 | 1 5 | 1 8 | 1
Da das ganze wohl so nicht geplant ist und es sich um ein ziemlich offensichtliches Problem ist, gehe ich stark davon aus, dass der Fehler bei mir liegt.
Die Entities sehen so aus:
PHP-Code:
/**
* @Entity
* @ChangeTrackingPolicy("DEFERRED_EXPLICIT")
* @Table(name="voc_vocables")
*/
class Vocable
{
public function __construct()
{
$this->phrases = new Doctrine/Common/Collections/ArrayCollection();
}
/**
* @Id
* @Column(type="integer", name="vocable_id")
* @GeneratedValue
*/
protected $id;
/**
* @ManyToMany(targetEntity="Phrase", mappedBy="vocables")
*/
protected $phrases;
public function getPhrases()
{
return $this->phrases;
}
}
/**
* @Entity
* @ChangeTrackingPolicy("DEFERRED_EXPLICIT")
* @Table(name="voc_phrases_new")
*/
class Phrase
{
public function __construct()
{
$this->vocables = new Doctrine/Common/Collections/ArrayCollection();
}
/**
* @Id
* @Column(type="integer", name="id")
* @GeneratedValue
*/
protected $id;
/**
* @ManyToMany(targetEntity="Vocable", inversedBy="phrases")
* @JoinTable(name="voc_phrases_j",
* joinColumns={@JoinColumn(name="phrase_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="voc_id", referencedColumnName="vocable_id")})
*/
protected $vocables;
public function getVocables()
{
return $this->vocables;
}
}
Hat irgendjemand vielleicht eine Idee, wo ich den Fehler mache? Google habe ich bereits ohne großen Erfolg angeschmissen und die offizielle Dokumentation hilft mir auch nicht weiter (oder ich hab einfach Tomaten auf den Augen).
Viele Grüße
Melkor