我有一个名为'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. enter link description here的解决方案
错误:
[语意错误]类别Webkul\CampusConnect\Entity\StudentAssignment中的注解“@Table”从未汇入。您是否忘记为此注解加入“use”陈述式?
实体:
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;
2条答案
按热度按时间t3psigkw1#
你已经编辑了,但是你没有使用
ORM
作为导入的替身,这是第1个(见评论)。然后您错过了将
ORM
添加到内部配置,例如,@ORM\UniqueConstraint
而不是@UniqueConstraint
。此外,UniqueConstraint的配置需要使用列名称,而不是属性。您还没有提供连接表的OtM-MtO关系的两端,但我假设它存在。您应该:
wqsoz72f2#
Symfony ≥5.2(和Doctrine ORM ≥2.9)解决方案具有以下属性: