如果另一列中的值为true,则为NOT NULL

时间:2019-02-20 08:27:13

标签: symfony doctrine

我正在创建我的实体,我想创建一个带有两列且需要具有特定约束的实体。如果定义了addressId,则extAddressId可以为null(并且必须为null)。

/**
 * @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 :(得分:1)

根据documentation,您可以添加如下检查约束:

RenderControl2

还没有测试过自己。