Doctrine 2?
まず、これが存在することを説明します:
結合テーブル(別名接合テーブルまたは相互参照テーブル)は、同じデータベース内で2つ(またはそれ以上)の他のテーブルを主キーでリンクするテーブルです。つまり、結合テーブルには外部キーのみが含まれ、これらの余分な列のための場所はありません。
したがって、そのようなテーブルに追加の列が必要な場合、それは他のテーブル間の単なる「リンク」ではなく、それ自体で実際のテーブルになります!
Doctrine 2に関しては、2つのエンティティ間の多対多の関連付けはなくなりましたが、3つのエンティティ間の1対多/多対1の関連付けが得られます。
詳細については、ここを読み続けてください。
2番目の記事では、マイナーアップデートを提案します。完全なイベントの代わりに、エンティティ自体内でLifecycleCallbackを使用します。
/**
* @ORM\Entity
* @ORM\Table(name="jobs”)
* @ORM\HasLifecycleCallbacks
*/
class Job
{
// ...
/**
* @ORM\PreRemove
*/
public function preRemoveCallback()
{
$this->setPerson(null);
$this->setCompany(null);
}
}