2010-12-09 8 views
0

フィールドに格納されたキーを使用して、複数回自分自身に関連付けるモデルで作業しています。それを宣言するために、より具体的に、これはいくつかの行と私のテーブルの例である:は、cakephpのフィールドを使って自身にモデルを関連付けます。

id   name   association_id 
------------------------------------------------------------------ 
33   item0   1111 
34   item1   2222 
35   item2   2222 
36   item3   2222 
37   item4   NULL 

ITEM3にITEM1という名前のこのデータ項目に応じて、すべてのITEM0またはITEM4で相互に関連付けられたがされていません。 問題は、CakePHPでこの関連付けを実装する方法がわかりません。それはhasManyでなければなりませんが、同じフィールド(association_id)を指している単語を接続することは可能ですか?idのプライマリキーを指していませんか? 2つ以上のアイテムを接続する必要がある場合、このassociation_idがオンザフライで生成されます。

ありがとうございます。

答えて

0

テーブルを正規化する必要があります。そのためには、あなたはとてもように、このテーブルを分割する必要があると思います:

associations: 
id | name 

items: 
id | name | association_id 

次のようにモデルの関係は次のようになります。

Item belongsTo Association 
Association hasMany Item 

association_idは、あなたのテーブルではいくつかのトークンである場合には、余分な関係を作成する必要はありません。グループ化フィールドを考慮してテーブルを照会するだけです。

希望に役立ちます!

+0

最初は私の選択でしたが、関連は実際にはスタンドアローンオブジェクトとして存在しません。アイテムが相互に接続されている場合にのみ存在します。このIDはオンデマンドで生成され、関連がない場合はオンザフライで削除されます。 – mohamnag

+0

OK、グループ分けはどのような方法でも良いようです! – mohamnag

関連する問題