一对一关系中的唯一属性 - Symfony
Attribute unique in one to one relationship - Symfony
我决定为类别实体实现递归一对一关系:
<?php
/**
* @ORM\Entity(repositoryClass="App\Repository\CategoryRepository")
*/
class Category{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @ORM\Column(type="string", length=60, unique=true, nullable=false)
*/
private $name;
/**
* @ORM\OneToOne(targetEntity="App\Entity\Category")
* @ORM\JoinColumn(name="father_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
*/
private $father;
.................
some methods
.................
}
没有父级的类别的属性 "parent" 为 null。另一个类别的子类别将具有其父类别的 ID。当有两个类别具有相同的父亲时,就会出现问题。错误如下:
An exception occurred while executing 'INSERT INTO category (name, father_id) VALUES (?, ?)' with params ["new category", 1]:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'UNIQ_4E10122D613CEC58'
问题是由于某些原因,"father" 属性默认为 "unique = true"。我试图更改此属性,设置 "unique = false" 但它不起作用。
我听取了这个问题的可能解决方案。非常感谢!
如果使用一对一关系,"father" 类别只能有一个 "daughter" 类别。你想要的是一个类别 "Father" 可以有多个类别 "daughter"。你需要一个one-to-many relationship self-referencing.
我决定为类别实体实现递归一对一关系:
<?php
/**
* @ORM\Entity(repositoryClass="App\Repository\CategoryRepository")
*/
class Category{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
protected $id;
/**
* @ORM\Column(type="string", length=60, unique=true, nullable=false)
*/
private $name;
/**
* @ORM\OneToOne(targetEntity="App\Entity\Category")
* @ORM\JoinColumn(name="father_id", referencedColumnName="id", nullable=true, onDelete="SET NULL")
*/
private $father;
.................
some methods
.................
}
没有父级的类别的属性 "parent" 为 null。另一个类别的子类别将具有其父类别的 ID。当有两个类别具有相同的父亲时,就会出现问题。错误如下:
An exception occurred while executing 'INSERT INTO category (name, father_id) VALUES (?, ?)' with params ["new category", 1]:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'UNIQ_4E10122D613CEC58'
问题是由于某些原因,"father" 属性默认为 "unique = true"。我试图更改此属性,设置 "unique = false" 但它不起作用。
我听取了这个问题的可能解决方案。非常感谢!
如果使用一对一关系,"father" 类别只能有一个 "daughter" 类别。你想要的是一个类别 "Father" 可以有多个类别 "daughter"。你需要一个one-to-many relationship self-referencing.