Как @Kris сказал - вы отправитесь от одного к многим к среднему сущности. Если вы перейдете для многих к многим, то у вас не будет файла класса для средней таблицы, что в большинстве случаев является проблемой.
M-N предположение: ОДИН Студенческие исследования в МНОГИХ Курсах и ОДНОМ КУРСЕ могут иметь МНОГО студентов.
Оба приведенных ниже примера дают вам эту ERD в базе данных, но вы хотите перейти к ОДНОЙ в МНОГО версию.
многие ко многим:
Это создаст StudentCourse
объект в базе данных, но, как вы не видите фактический файл класса для вас, чтобы иметь дело с.
class Student
{
protected $id;
protected $name;
/**
* @ORM\ManyToMany(targetEntity="Course")
* @ORM\JoinTable(
* name="StudentCourse",
* joinColumns={@ORM\JoinColumn(name="studentId", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="courseId", referencedColumnName="id")}
*)
*/
private $course;
}
class Course
{
protected $id;
protected $name;
}
один ко многим:
Это создаст StudentCourse
объект в базе данных, и, как вы видите, есть фактический файл класса для вас, чтобы иметь дело с при кодировании, например, сохраняются() и т.д.
class Student
{
protected $id;
protected $name;
/**
* @ORM\OneToMany(targetEntity="StudentCourse", mappedBy="studentMap",
* cascade={"persist", "remove"})
*/
protected $studentInverse;
}
class StudentCourse
{
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Course", inversedBy="courseInverse")
* @ORM\JoinColumn(name="course", referencedColumnName="id",
* nullable=false, onDelete="CASCADE")
*/
protected $courseMap;
/**
* @ORM\ManyToOne(targetEntity="Student", inversedBy="studentInverse")
* @ORM\JoinColumn(name="student", referencedColumnName="id",
* nullable=false, onDelete="CASCADE")
*/
protected $studentMap;
}
class Course
{
protected $id;
protected $name;
/**
* @ORM\OneToMany(targetEntity="StudentCourse", mappedBy="courseMap",
* cascade={"persist", "remove"})
*/
protected $courseInverse;
}
РЕДАКТИРОВАТЬ: onDelete="CASCADE"
и cascade={"persist", "remove"}
биты не являются обязательными. Они обрабатывают избыточность данных.Is it bad to use redundant relationships?
Wow спасибо, что объяснил это так ясно! Это невероятно полезно. –
Нет проблем. Возможно, вы уже знаете, но я добавил примечание под EDIT. – BentCoder
Хорошо, я внес эти изменения, и сама база данных, похоже, настроена правильно. Однако мои светильники больше не выглядят счастливыми. Когда я пытаюсь загрузить их, я получаю сообщение об ошибке, которое я добавил в нижней части моего вопроса. –