2012-08-08 4 views
15

Ich habe eine Tabelle mit Produkten und eine andere Tabelle mit Notizen. Jedes Produkt kann einige Noten haben oder nicht. Ich brauche nur die Noten, um zu wissen, zu welchem ​​Produkt sie gehören, aber das Produkt, um nicht über seine Anmerkungen zu wissen. Ich denke, dass dies mein Code sein sollte:Verwenden Sie Anweisung für @OneToOne - Doctrine2

namespace EM\MyBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

use EM\MyBundle\Entity\Productss; 

/** 
* @ORM\Entity 
* @ORM\Table(name="notes") 
*/ 
class Notess 
{ 
/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @OneToOne(targetEntity="Productss") 
* @JoinColumn(name="products_id", referencedColumnName="id") 
**/ 
private $products; 
//... 
} 

namespace EM\MyBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @ORM\Entity 
* @ORM\Table(name="domains") 
*/ 
class Domains 
{ 
/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 
// ... 
} 

aber es gibt einen Fehler: [Lehre \ Common \ Annotations \ AnnotationException]

[Semantische Fehler] Die Anmerkung "@OneToOne" in Immobilien EM \ MyBundle \ Entity \ Notes :: $ products wurde nie importiert. Haben Sie vielleicht vergessen, eine Anweisung " " für diese Anmerkung hinzuzufügen?

Können Sie mir bitte helfen, dies zu beheben?

Antwort

51

Ich glaube, Sie @ORM\OneToOne gedacht waren, stattdessen zu verwenden ...

/** 
* @ORM\OneToOne(targetEntity="Productss") 
* @ORM\JoinColumn(name="products_id", referencedColumnName="id") 
*/ 
private $products; 
//... 
} 
+0

Vielen Dank! Es funktioniert jetzt! :) – Faery

+0

Diese Probleme entstehen, egal welche Art von Beziehung es ist: oneToMany, oneToOne oder manyToMany, wegen der Dokumentation. Ich hatte das gleiche Problem nur Kopieren/Einfügen der offiziellen Dokumentation: http://docs.doctrine-project.org/en/latest/reference/association-mapping.html –

+2

Dies würde sein, weil die Doktrin Dokumentation Sie annehmen würde jede '@' Klasse benutzen, so dass alle Annotationen den tatsächlichen Klassennamen verwenden ('Lehre/ORM/Mapping/OneToOne' =>' @ OneToOne'), wobei Symfony die 'Doktrine \ ORM \ Mapping empfiehlt AS ORM' Namespace-Ansatz, so dass alle Anmerkungen den ORM als Basis verwenden ('@ORM \ OneToOne'). – qooplmao

Verwandte Themen