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.