Sau*_*abh 2 php doctrine symfony doctrine-orm
我有一个名为“student_assignment”的表,其中有多个列,我在下面显示了其中的 2 个:
这两个列也是外键。
StudentId assignmentId
10 7 -> allowed
10 8 -> allowed
11 7 -> allowed
11 7 -> not allowed, the combination of 11 7 already exists in table
Run Code Online (Sandbox Code Playgroud)
我已经在我的实体文件中尝试过这个,但它不起作用。
/**
* Webkul\CampusConnect\Entity\StudentAssignment
*
* @Table(name="student_assignment",
* uniqueConstraints={
* @UniqueConstraint(name="assignment_unique",
* columns={"student", "assignment"})
* }
* )
* @Entity
*/
Run Code Online (Sandbox Code Playgroud)
请教如何在 symfony 4 中使用 ORM 来实现这一点。
我有一个同样的链接,但在 Mysql 中。我想要 Symfony ORM 的解决方案。 在此处输入链接描述
错误:
[语义错误] Webkul\CampusConnect\Entity\StudentAssignment 类中的注释“@Table”从未被导入。您是否忘记为此注释添加“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;
Run Code Online (Sandbox Code Playgroud)
您已编辑,但没有ORM
用作导入的别名,即编号 1(请参阅评论)。
然后你错过了添加ORM
到内部配置,例如@ORM\UniqueConstraint
而不是@UniqueConstraint
. 此外, UniqueConstraint 的配置需要使用列名,而不是property。
您还没有提供连接表'esque OtM - MtO 关系的双方,但我假设它存在。你应该有:
namespace Webkul\CampusConnect\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(
* name="student_assignment",
* uniqueConstraints={
* @ORM\UniqueConstraint(name="assignment_unique", columns={"student_id", "assignment_id"})
* }
* )
* @Entity
*/
class StudentAssignment
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(name="id", type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="Webkul\CampusConnect\Entity\Student", inversedBy="studentAssignments")
* @ORM\JoinColumn(name="student_id", onDelete="CASCADE")
*/
private $student;
/**
* @ORM\ManyToOne(targetEntity="Webkul\CampusConnect\Entity\Assignment", inversedBy="studentAssignments")
* @ORM\JoinColumn(name="assignment_id", onDelete="CASCADE")
*/
private $assignment;
// ...
}
Run Code Online (Sandbox Code Playgroud)