Как настроить таблицу соединений с дополнительными столбцами или связью "многие-ко-многим" с дополнительными свойствами в Doctrine 2?
Doctrine 2: Как обрабатывать таблицы объединений с дополнительными столбцами
Ответ 1
Прежде всего, позвольте мне объяснить, что этого не существует:
Таблица соединений (также известная как таблица соединений или таблица перекрестных ссылок) - это таблица, которая связывает 2 (или более) других таблиц в одной базе данных по первичному ключу. Это означает, что таблица соединения будет содержать только внешние ключи, для этих дополнительных столбцов места нет.
Поэтому, когда вам нужны дополнительные столбцы в такой таблице, она больше не является просто "связью" между другими таблицами, а сама становится реальной таблицей!
С точки зрения Доктрины 2, у вас больше нет связи "многие ко многим" между двумя объектами, но вы получаете связь "один ко многим/многие к одному" между 3 объектами.
Продолжите читать здесь для более подробных объяснений:
Ответ 2
Во второй статье я предлагаю небольшое обновление. Вместо полного события используйте LifecycleCallback внутри самого объекта:
/**
* @ORM\Entity
* @ORM\Table(name="jobs")
* @ORM\HasLifecycleCallbacks
*/
class Job
{
// ...
/**
* @ORM\PreRemove
*/
public function preRemoveCallback()
{
$this->setPerson(null);
$this->setCompany(null);
}
}