0

Order と Widget の 2 つのモデルがあります。ウィジェットは、1 つの注文にのみ存在できる固有のアイテムです。これは、belongsTo で表すことができます。つまり、Wiget の belongsTo と Order で表すことができ、Widget には order_id フィールドが含まれます。または、結合テーブルを使用して hasAndBelongsToMany にすることもできます。

Widget はそれ自体で存在し、後で Order に関連付けられるため、Widget の order_id フィールドが空のままであっても「大丈夫」ですか? 将来のある時点でそれを Order に関連付ける結合テーブルを持つことに対して、私には「汚れている」ように思えます。Order に関連付けられているウィジェットとそうでないウィジェットも取得する必要があります。

これを設定する最良の方法は何ですか?

4

1 に答える 1

1

null を許可する外部キーを指定して、belongsTo を使用します。不潔に見えるかもしれませんが、ウィジェットが 1 つのオーダーにのみ存在できると述べた場合、HABTM に次ぐ最良の代替手段だと思います。あるレコードを別のレコードに関連付けるためだけに結合テーブルを用意するのはかなり面倒です。

注文があるウィジェットとないウィジェットを取得する必要がある場合は、order_id = null でフィルターを実行します。または、Containable Behaviour で検索を行う場合、Widget の order_id が null の場合、レコードは取得されません。

于 2013-08-05T18:38:42.347 に答える