2012-08-08 12 views
15

Tengo una tabla con Productos y otra tabla con Notas. Cada producto puede tener o no algunas notas. Solo necesito las notas para saber a qué producto se refieren, pero el producto no sabe acerca de sus notas. Creo que esto debería ser mi código:Usar instrucción para @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; 
// ... 
} 

pero da un error: [Doctrina \ Common \ Anotaciones \ AnnotationException]

[error semántico] La anotación "@OneToOne" con propiedades EM \ mipaquete \ Entity \ Notes :: $ products nunca se importó. ¿Olvidaste quizás agregar una declaración "use " para esta anotación?

¿Puedes ayudarme a solucionarlo?

Respuesta

51

creo que estaba destinado a utilizar @ORM\OneToOne lugar ...

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

Muchas gracias! ¡Está trabajando ahora! :) – Faery

+0

Este problema surge independientemente del tipo de relación: oneToMany, oneToOne o manyToMany, debido a la documentación. He tenido el mismo problema solo al copiar/pegar la documentación oficial: http://docs.doctrine-project.org/en/latest/reference/association-mapping.html –

+2

Esto se debe a que la documentación de la doctrina te presupone sería 'use'ing cada clase' @ 'para que todas las anotaciones usen el nombre de clase real (' use Doctrine/ORM/Mapping/OneToOne' => '@ OneToOne'), mientras que Symfony recomienda' use Doctrine \ ORM \ Mapping AS ORM' acerca del espacio de nombres para que todas las anotaciones utilicen el ORM como base ('@ORM \ OneToOne'). – qooplmao