Ich habe eine Entität 'Listung' mit OneToMany zu Entität 'view', der Schlüssel zwischen diesen zu ist view.content_id, die die ID der Auflistung enthält, aber es bezieht sich auch auf andere Entitäten, also durch HinzufügenDoctrine2 OneToMany ohne mappedBy
/**
* @var Listing
*
* @ORM\ManyToOne(targetEntity="\Acme\Bundle\Entity\Listing", inversedBy="views")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="content_id", referencedColumnName="id")
* })
*/
private $listing;
Zur Ansicht bremst es, weil die content_id beim Speichern der View-Entity null wird.
Wie kann ich es beheben?
Relation auf Auflisten Seite:
/**
* @var views
*
* @ORM\OneToMany(targetEntity="\Acme\Bundle\Entity\View", mappedBy="listing")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="id", referencedColumnName="content_id")
* })
*/
private $views;
Ich mache Anfragen durch die Listing.views Verbinden und das Hinzufügen von MIT content_type =: Contenttype, die einige 'view' Ergebnisse diskriminiert.
Der Fehler, den Sie bekommen, sagt Ihnen nicht, 'cascade = {" persist "}' 'zu verwenden? – cheesemacfly
Es gibt keinen Fehler, dies ist ein gültiger Ansatz. Beim Speichern von 'view' wird das Feld content_type jedoch null, da zwei Anmerkungen auf diese Spalte verweisen. – Paxton
Normalerweise ist keine zweite 'JoinColumns' oder' JoinColumn' Annotation notwendig, da es eine "Eigentümer" und eine "inverse" Seite gibt. Meine Vermutung ist, dass diese Annotation in Ihrem Code eine Art von Konflikt verursacht, so dass Doctrine nicht auflösen kann, welche Site was ist ... –