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

问题描述 投票:0回答:1

我正在创建我的实体,我想创建一个具有两列需要具有特定约束的实体。如果定义了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而不是使用doctrine。

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) ) 
);
symfony doctrine
1个回答
1
投票

根据documentation你可以添加这样的检查约束:

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

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

没有测试过自己。

© www.soinside.com 2019 - 2024. All rights reserved.