Php 如何使用条令使Symfony 4中的两列组合具有唯一性?

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

我有一个名为“student_assignment”的表,其中有多个列,我在下面显示了其中的两个列:

这两列也是外键

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:我已经用过了。我已经更新了我的问题。请检查。清除缓存,然后重试