我正在使用UniqueEntity
约束来确保我没有两个具有相同flowId
和listId
的实体。
这是我的实体:
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @UniqueEntity(fields={"flowId","listId"})
*
* @ORM\Entity(repositoryClass="InvitationService\Infrastructures\Persistence\Doctrine\InvitationRepository"
* )
* @ORM\Table(
* name="invitations",
* uniqueConstraints={
* @ORM\UniqueConstraint(
* name="flow_list_uniqueness",
* columns={"flow_id", "list_id"})
* }
* )
*/
class Invitation extends Model
{
/**
* @var string
*
* @ORM\Column(name="flow_id", type="string", length=100, nullable=false)
*/
protected $flowId;
/**
* @var string
*
* @ORM\Column(name="list_id", type="string", length=100, nullable=false)
*/
protected $listId;
当我使用flowId
和listId
的相同组合保留第二个实体时,会触发名称为UniqueConstraint
的{{1}}并收到错误:
flow_list_uniqueness
显然SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry 'flow-abc-list-abc' for key 'flow_list_uniqueness'"
没有做任何事情,我尝试在UniqueEntity
类和var_dump
类中添加一些UniqueEntity
以确保这些类至少是叫,但我没有得到任何输出。
我在SO和symfony的github存储库中检查了一些类似的问题,但没有任何对我有用。
我正在使用PHP 7.1,Symfony 3.3和doctrine 2.5与MySQL db。
感谢任何帮助。