0

Doctrine 自体よりもデータベースの関係に問題があります。テーブル「プロジェクト」とテーブル「project_data」があります。テーブル「project_data」は常にプロジェクト エントリにリンクされています。ただし、テーブル「プロジェクト」では、project_data エントリへの 2 つの参照 (project_data_id と project_data_waiting_id) を使用できます。ただし、これらの参照は null である可能性があり、project_data テーブルに設定されている「project_id」とは関係ありません。

質問 :

  • これらすべての関係を定義する方法は? project_data を参照せずにプロジェクト エントリを作成できるようにしたいと考えています。

  • Doctrineでそれを処理する方法は? 私は Doctrine とデータベース設計に慣れていないので、テーブル間で行わなければならないすべての結合の間で少し迷っています。

私がやりたいことをよりよく理解するために、図に参加します。

ありがとうございました。

EER図

4

1 に答える 1

1

この場合、2 つのオプションを提供します (project_data常に 1 つしかないと仮定しますproject)。

初め:

project
- id
- project_data_id
- project_data_waiting_id

project_data
- id
- name

その場合、プロジェクト クラスで 2 つの 1 対 1 の関係を定義できます。これを処理する方法の詳細については、http://docs.doctrine-project.org/en/latest/reference/association-mapping.html#one-to-one-bidirectionalを参照してください。

2番目: オプション:

多対多の関係を作成して、project_data にステータスを与えることもできます。次のようになります。

project
- id

project_data
- id
- name
- project_id
- status_id

project_data_status
- id
- name

この場合project、 は と多対 1 の関係を持ち、project_dataproject_data1 対多の関係を持ちproject_data_statusます。このソリューションにより、柔軟性が向上します。project_data好きなだけオブジェクトを追加できprojectます。

doctrine2 でリレーションを定義する方法は、この投稿で既に提供した同じページにあります。

うまくいけば、これはあなたを正しい方向に向けるでしょう。

于 2013-09-18T11:31:59.930 に答える