J'ai une table avec Produits et une autre table avec Notes. Chaque produit peut avoir ou non des notes. Je n'ai besoin que des notes pour savoir à quel produit elles sont référées, mais le produit ne doit pas connaître ses notes. Je pense que cela devrait être mon code:Utilisation de l'instruction pour @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;
// ...
}
mais il donne une erreur: [Doctrine \ Common Files \ Annotations \ AnnotationException]
[Erreur Sémantique] L'annotation "@OneToOne" dans la propriété EM \ MyBundle \ L'entité \ Notes :: $ products n'a jamais été importée. Avez-vous oublié d'ajouter une instruction "use " pour cette annotation?
Pouvez-vous s'il vous plaît aidez-moi à résoudre ce problème?
Merci beaucoup! Il fonctionne maintenant! :) – Faery
Ce problème se pose quel que soit le type de relation: oneToMany, oneToOne ou manyToMany, à cause de la documentation. J'ai eu le même problème que de faire un copier/coller de la documentation officielle: http://docs.doctrine-project.org/en/latest/reference/association-mapping.html –
Ce serait parce que la documentation de la doctrine vous suppose serait 'use'ing chaque classe' @ 'de sorte que toutes les annotations utilisent le nom de classe réel (' use Doctrine/ORM/Mapping/OneToOne' => '@ OneToOne'), où Symfony recommande' use Doctrine \ ORM \ Mapping AS ORM' approche de l'espace de noms de sorte que toutes les annotations utilisent l'ORM comme base ('@ORM \ OneToOne'). – qooplmao