更新:请注意:直到我将相关PK for
类型从 integer 更改为 guid 以来,uniqie验证才能正常进行。
我有一个实体User::$id
,它与UserWatchlist
有关(多对一)。
它对2个字段User
和user
具有复杂的唯一约束:
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;
此检查被忽略,仅进行数据库级索引检查(如果有)。
所有索引和外键都可以。
这是一个错误还是我做错了什么主意?
答案 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