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?
Muchas gracias! ¡Está trabajando ahora! :) – Faery
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 –
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