NOT NULL, если значение равно true в другом столбце - PullRequest
0 голосов
/ 20 февраля 2019

Я создаю свои сущности и хочу создать сущность с двумя столбцами, которые должны иметь определенное ограничение.Если addressId определен, то extAddressId может быть нулевым (и оно должно быть нулевым).

/**
 * @ORM\Entity()
 * @ORM\Table(name="widgets")
 */
class Widget
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="integer")
     */
    private $addressId;

    /**
     * @ORM\Column(type="integer")
     */
    private $extAddressId;
}

Я знаю, как сделать это с SQL, но не с доктриной.

CREATE TABLE widgets
(
id integer,
addressId integer,
extAddressId integer,
CONSTRAINT if_addressId_then_extAddressId_is_not_null 
   CHECK ( (NOT addressId) OR (extAddressId IS NOT NULL) ) 
);

1 Ответ

0 голосов
/ 20 февраля 2019

Согласно документации вы можете добавить ограничения проверки следующим образом:

/**
 * @ORM\Column(type="integer", options={"check":"[your check condition]"})
 */
private $addressId;

/**
 * @ORM\Column(type="integer", options={"check":"[your check condition]"})
 */
private $extAddressId;

Сам не проверял.

...