without unidirectional one manytoone many foreign symfony doctrine doctrine2

symfony - unidirectional - Doctrine 2 no puede usar nullable=false en la relación manyToOne?



doctrine2 many to many bidirectional (1)

Un User tiene un Package asociado. Muchos usuarios pueden referirse al mismo paquete. User no puede existir sin un Package definido. User debe poseer la relación. La relación es bidireccional, por lo que un Package tiene cero o más usuarios en él.

Estos requisitos conducen a la relación ManyToOne para el User y OneToMany relación del Package en Doctrine 2. Sin embargo, package_id en user tabla del user (es decir, la clave externa) permite valores null . Intenté establecer nullable=false pero comando:

php app/console doctrine:generate:entities DL --path="src" --no-backup

Dice que no hay ningún atributo nullable para la relación ManyToOne . ¿Qué me estoy perdiendo?

class User { /** * @ORM/Id * @ORM/Column(type="integer") * @ORM/GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM/ManyToOne(targetEntity="Package", inversedBy="users") */ private $package; } class Package { /** * @ORM/Id * @ORM/Column(type="integer") * @ORM/GeneratedValue(strategy="AUTO") */ private $id; /** * @ORM/OneToMany(targetEntity="User", mappedBy="package") */ private $users; }

EDIT : resuelto. tenga en cuenta que esto está mal (tenga en cuenta las comillas dobles):

@ORM/JoinColumn(name="package_id", referencedColumnName="id", nullable="false")

Si bien esto es correcto:

@ORM/JoinColumn(name="package_id", referencedColumnName="id", nullable=false)


Use la anotación JoinColumn en su relación ManyToOne:

/** * @ORM/ManyToOne(targetEntity="Package", inversedBy="users") * @ORM/JoinColumn(name="package_id", referencedColumnName="id", nullable=false) */ private $package;

El ManyToOne en sí mismo no puede ser anulable, porque no se relaciona con una columna específica. JoinColumn, por otro lado, identifica la columna en la base de datos. Por lo tanto, puede usar atributos "normales" como anulables o únicos.