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

Symfony 如果另一列中的值为true,则不为NULL,symfony,doctrine,Symfony,Doctrine,我正在创建我的实体,我想创建一个包含两列的实体,这两列需要有一个特定的约束。如果定义了addressId,则extAddressId可以为null,并且必须为null /** * @ORM\Entity() * @ORM\Table(name="widgets") */ class Widget { /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */

我正在创建我的实体,我想创建一个包含两列的实体,这两列需要有一个特定的约束。如果定义了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) ) 
);
根据,可以添加如下检查约束:

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

/**
 * @ORM\Column(type="integer", options={"check":"[your check condition]"})
 */
private $extAddressId;
我还没有测试过自己