Есть User
один, Package
связанный с ним. Многие пользователи могут обращаться к одному и тому же пакету. User
не может существовать без Package
определенного. User
должен владеть отношением. Отношение является двунаправленным, поэтому у a Package
есть ноль или более пользователей.
Эти требования приводят к ManyToOne
соотношению for User
и OneToMany
отношению of Package
в Doctrine 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;
}
РЕДАКТИРОВАТЬ : решено. обратите внимание, что это неправильно (обратите внимание на двойные кавычки):
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable="false")
Хотя это правильно:
@ORM\JoinColumn(name="package_id", referencedColumnName="id", nullable=false)
источник
package_id
по-прежнему помечен как NULL - Да, по умолчанию - NULL. Любая помощь очень ценится.nullable="false"
неправильно!@ORM\Column(nullable=true)
сделать свой manytoone обнуляемым!console doctrine:cache:clear-metadata
команду