Php 如何使用条令使Symfony 4中的两列组合具有唯一性?
我有一个名为“student_assignment”的表,其中有多个列,我在下面显示了其中的两个列: 这两列也是外键Php 如何使用条令使Symfony 4中的两列组合具有唯一性?,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,我有一个名为“student_assignment”的表,其中有多个列,我在下面显示了其中的两个列: 这两列也是外键 StudentId assignmentId 10 7 -> allowed 10 8 -> allowed 11 7 -> allowed 11 7 -> no
StudentId assignmentId
10 7 -> allowed
10 8 -> allowed
11 7 -> allowed
11 7 -> not allowed, the combination of 11 7 already exists in table
我已经在我的实体文件中尝试过,但它不起作用
/**
* Webkul\CampusConnect\Entity\StudentAssignment
*
* @Table(name="student_assignment",
* uniqueConstraints={
* @UniqueConstraint(name="assignment_unique",
* columns={"student", "assignment"})
* }
* )
* @Entity
*/
请说明如何在symfony 4中使用ORM实现此功能
我有一个链接,但在Mysql中有相同的功能。我想要Symfony ORM的解决方案。
错误:
namespace Webkul\CampusConnect\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\Table;
/**
* Webkul\CampusConnect\Entity\StudentAssignment
*
* @ORM\Table(name="student_assignment",
* uniqueConstraints={
* @UniqueConstraint(name="assignment_unique",
* columns={"student", "assignment"})
* }
* )
* @Entity
*/
class StudentAssignment
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Webkul\CampusConnect\Entity\Student", inversedBy="studentAssignments")
* @ORM\JoinColumn(onDelete="CASCADE")
*/
private $student;
[语义错误]类中的批注“@Table”
从未导入Webkul\CampusConnect\En tity\StudentAssignment。
你是不是忘了为这个添加一个“u-se”语句
注释
实体:
namespace Webkul\CampusConnect\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\Table;
/**
* Webkul\CampusConnect\Entity\StudentAssignment
*
* @ORM\Table(name="student_assignment",
* uniqueConstraints={
* @UniqueConstraint(name="assignment_unique",
* columns={"student", "assignment"})
* }
* )
* @Entity
*/
class StudentAssignment
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Webkul\CampusConnect\Entity\Student", inversedBy="studentAssignments")
* @ORM\JoinColumn(onDelete="CASCADE")
*/
private $student;
您已经编辑过,但没有将
ORM
用作导入的别名,这是第一个别名(请参见注释)
然后您没有将ORM
添加到内部配置,例如@ORM\UniqueConstraint
而不是@UniqueConstraint
。此外,UniqueConstraint的配置需要使用列名称,而不是属性
您没有提供联接表式OtM-MtO关系的两侧,但我假设它存在。你应该:
名称空间Webkul\CampusConnect\Entity;
使用条令\ORM\Mapping作为ORM;
/**
*@ORM\Table(
*name=“学生作业”,
*唯一约束={
*@ORM\UniqueConstraint(name=“assignment\u unique”,columns={“student\u id”,“assignment\u id”})
* }
* )
*@实体
*/
班级学生分配
{
/**
*@ORM\Id
*@ORM\GeneratedValue
*@ORM\Column(name=“id”,type=“integer”)
*/
私人$id;
/**
*@ORM\manytone(targetEntity=“Webkul\CampusConnect\Entity\Student”,inversedBy=“studentAssignments”)
*@ORM\JoinColumn(name=“student\u id”,onDelete=“CASCADE”)
*/
私立$学生;
/**
*@ORM\manytone(targetEntity=“Webkul\CampusConnect\Entity\Assignment”,inversedBy=“studentAssignments”)
*@ORM\JoinColumn(name=“assignment\u id”,onDelete=“CASCADE”)
*/
私人转让;
// ...
}
实施此操作后是否更新了数据库?或者试着澄清cache@habibun:以上给了我一个错误。我用错误更新了这个问题。请检查。请在名称空间后放置,使用条令\ORM\Mapping\Table代码>@habibun:我已经用过了。我已经更新了我的问题。请检查。清除缓存,然后重试