2013-09-06 19 views
16

Doctrine 2では、追加の列または多対多の関連付けを持つ結合テーブルを設定するにはどうすればよいですか?Doctrine 2:余分な列を持つ結合テーブルを処理する方法

+0

@ThatBlairGuy私はあなたが[余分なタグ]の多くを削除するに気づきました。この編集は適切でしたが、タグを削除するだけでなく、投稿のすべての側面を確実に修正するようにしてください。詳細については、この[メタ・ディスカッション](https://meta.stackoverflow.com/questions/314488/how-to-deal-with-serial-tag-only-ed-sub-2k-users) – ryanyuyu

答えて

50

まずオフ、私は、これがが存在しないことを説明しましょう:

テーブルは(もジャンクションテーブルまたはクロスリファレンステーブルとして知られている)2をリンクテーブルであるジョイン(またはそれ以上の)他のテーブルを同じデータベース内で一緒にプライマリキーで並べ替えます。 これは、結合表には外部キーのみが含まれることを意味します。これらの余分な列の場所はありません。

このようなテーブルに余分な列が必要な場合、他のテーブル間の単なる「リンク」ではなく、実テーブルになります。

Doctrine 2では、2つのエンティティ間に多対多の関連付けはなくなりましたが、3つのエンティティ間に1対多数/多対1の関連付けを取得しました。

は、詳細の説明はこちら続きを読む:第二の記事で

+0

をお読みくださいリンクが壊れている、誰でもそれらを更新できますか? –

+2

リンクが更新されました! (フォーマットはちょっとしたものかもしれませんが、すぐに修正されます) –

+0

ありがとうございます。リンクを更新してください! –

1

、私はマイナーアップデートをお勧めします。代わりに、完全なイベントのため、エンティティ自体の中LifecycleCallbackを使用します。タグ:

/** 
* @ORM\Entity 
* @ORM\Table(name="jobs”) 
* @ORM\HasLifecycleCallbacks 
*/ 
class Job 
{ 
    // ... 

    /** 
    * @ORM\PreRemove 
    */ 
    public function preRemoveCallback() 
    { 
     $this->setPerson(null); 
     $this->setCompany(null); 
    } 
} 
関連する問題