З Userним Packageпов’язаний один . Багато користувачів можуть звернутися до одного пакету. Userне може існувати без Packageвизначеного. Userповинні володіти відношенням. Відношення є двонаправленим, тому в ньому Packageє нуль або більше користувачів.
Ці вимоги призводять до ManyToOneспіввідношення Userта OneToManyвзаємозв'язку Packageв Доктрині 2. Однак package_idу userтаблиці (тобто зовнішньому ключі) допускаються nullзначення. Я спробував налаштувати, nullable=falseале команду:
php app/console doctrine:generate:entities DL --path="src" --no-backup
Каже, що nullableдля цього відношення немає атрибутів ManyToOne. Що мені не вистачає?
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 : вирішено. зверніть увагу, що це неправильно (зверніть увагу на подвійні лапки):
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable="false")
Хоча це правильно:
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
package_idвсе ще позначений як Null - Так, за замовчуванням - NULL. Будь-яка допомога дуже цінується.