如何使用Doctrine在Symfony 4中组合两个独特的列?

问题描述 投票:0回答:1

我有一个名为'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的解决方案。 qazxsw poi

错误:

[语义错误]从未导入类Webkul \ CampusConnect \ En tity \ StudentAssignment中的注释“@Table”。您是否忘记为此注释添加“u se”语句?

实体:

enter link description here
php symfony doctrine-orm doctrine
1个回答
0
投票

你已经编辑了,但是你没有使用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; 作为导入的别名,这是1号(见注释)。

然后你错过了将ORM添加到内部配置,例如ORM而不是@ORM\UniqueConstraint。此外,UniqueConstraint的配置需要使用列名,而不是属性。

你没有提供连接表的两个侧面的OtM - MtO关系,但我认为它存在。你应该有:

@UniqueConstraint
© www.soinside.com 2019 - 2024. All rights reserved.