我正在创建我的实体,我想创建一个带有两列且需要具有特定约束的实体。如果定义了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) )
);