Подтвердить что ты не робот

Doctrine 2 - Запретить значение NULL для внешних ключей отношений ManyToOne

У меня есть отношение ManyToOne в одном из моих объектов, например:

class License {
    // ...
    /**
     * Customer who owns the license
     * 
     * @var \ISE\LicenseManagerBundle\Entity\Customer
     * @ORM\ManyToOne(targetEntity="Customer", inversedBy="licenses")
     * @ORM\JoinColumn(name="customer_id", referencedColumnName="id")
     */
    private $customer;
    // ...
}

class Customer {
    // ...
    /**
     * Licenses that were at one point generated for the customer
     * 
     * @var \Doctrine\Common\Collections\ArrayCollection
     * @ORM\OneToMany(targetEntity="License", mappedBy="customer")
     */
    private $licenses;
    // ...
}

Это генерирует схему базы данных, где поле "customer_id" таблицы лицензий разрешено быть нулевым, что именно то, что я не хочу.

Вот некоторый код, где я создаю запись, чтобы доказать, что она действительно разрешает нулевые значения для ссылочных полей:

$em = $this->get('doctrine')->getEntityManager();
$license = new License();
// Set some fields - not the reference fields though
$license->setValidUntil(new \DateTime("2012-12-31"));
$license->setCreatedAt(new \DateTime());
// Persist the object
$em->persist($license);
$em->flush();

В принципе, я не хочу, чтобы лицензия сохранялась без назначения Клиента. Есть ли какая-то аннотация, которая должна быть установлена, или мне просто нужно, чтобы объект Customer был передан моему конструктору лицензии?

Я использую MySQL, я использую Doctrine 2 в приложении Symfony2.

4b9b3361

Ответ 2

Просто опубликовано, потому что @zim32 не сообщила, где мы должны поставить инструкцию, поэтому мне пришлось сделать пробную версию и ошибку.

YAML:

manyToOne:
    {field}:
        targetEntity: {Entity}
        joinColumn:
            name: {field}
            nullable: false
            referencedColumnName: {id}
        cascade: ['persist']