User
Ma jeden Package
z nim związane. Wielu użytkowników może odnosić się do tego samego pakietu. User
nie może istnieć bez Package
określonego. User
powinien być właścicielem relacji. Relacja jest dwukierunkowa, więc Package
ma zero lub więcej użytkowników.
Te wymagania prowadzą do ManyToOne
relacji dla User
i OneToMany
relacji Package
w Doktrynie 2. Jednak package_id
w user
tabeli (czyli klucza obcego) dopuszcza się null
wartości. Próbowałem ustawić, nullable=false
ale polecenie:
php app/console doctrine:generate:entities DL --path="src" --no-backup
Mówi, że nie ma atrybutu nullable
dla relacji ManyToOne
. Czego mi brakuje?
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;
}
EDYCJA : rozwiązana. pamiętaj, że to źle (zwróć uwagę na podwójne cudzysłowy):
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable="false")
Chociaż jest to poprawne:
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
package_id
jest nadal oznaczona jako Null - Tak, Domyślnie - NULL. Każda pomoc jest bardzo ceniona.