2017-05-09 7 views
0

この時点で、リレーションの結合列に合体を使用する方法がありますか?Doctrine ORM、JoinColumn内の合体

例えば、車には多くの部品があります。車は自分自身との関係を持つことができます。私は別の車(元の車)を参照してデモ車を作りたい。しかし、私は車のすべての部分をコピーしたくありません。ですから、私はCoalesceを使って参加したいと思います。 join part.car_id = coalesce(car.car_id, car.id)。そこで、合体を使用して、car_idとしての車かどうか、元の車の場合はそのデモ車、元の車の車IDを使用するかどうかを確認します。ない場合は、車のIDを使用してください。たとえば、元の車を呼び出すとき。

注釈を使用することができない場合は、それは別の方法で可能でしょうか?

答えて

0

ドクトリン結合に条件を定義することはできません。アソシエーションは常に具体的なエンティティとフィールドの間で定義されます。 また、リレーショナルデータベースの制約では機能しません。

私はあなたがそれを達成するために異なるデザインを使うべきだと思います。私は新しいエンティティModelを導入し、このエンティティにpartsを関連付け、次にModelに関連付けられたCarを持つことをお勧めします。

+0

これは可能ではないため、答えとして受け入れられます。提案された実装は、実際に厳しいとされたケースを実際には実行しません。しかし、あなたのコメントに感謝します。 –

関連する問題