Symfony4:UniqueEntity约束不适用于GUID字段(相关实体)

时间:2019-10-22 07:07:53

标签: symfony unique uuid guid unique-constraint

更新:请注意:直到我将相关PK for类型从 integer 更改为 guid 以来,uniqie验证才能正常进行。

我有一个实体User::$id,它与UserWatchlist有关(多对一)。 它对2个字段Useruser具有复杂的唯一约束:

direction

use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; /** * @ORM\Entity(repositoryClass="App\Repository\UserWatchlistRepository") * @UniqueEntity( * fields={"user", "direction"}, * errorPath="direction", * message="User already has this direction" * ) */ class UserWatchlist { PK为整数

User::$id

唯一性检查工作正常。

但是由于我将其更新为guid类型:

Class User

  /**
   * @ORM\Id()
   * @ORM\GeneratedValue()
   * @ORM\Column(type="integer")
   */
  private $id;

此检查被忽略,仅进行数据库级索引检查(如果有)。

所有索引和外键都可以。

这是一个错误还是我做错了什么主意?

1 个答案:

答案 0 :(得分:0)

修改注释后,您需要在数据库中创建迁移并更改架构:

php bin/console make:migration
php bin/console doctrine:migrations:migrate

在Symfony docs about Doctrine and database中了解更多信息。

仅供参考:有一个工具可用于检查您的映射注释是否与数据库同步:

php bin/console doctrine:schema:validate