0

プロジェクトをユーザーに割り当てるプロジェクト管理システムを作成しています

ProjectsUserモデルの作成と2つの$belongsTo関係の定義、およびHABTM両方ProjectUserモデルの関係の定義の違いは何ですか?しかし、最も正しい方法は何でしょうか?projects_usersまた、データをテーブルに保存するにはどうすればよいですか?

4

3 に答える 3

3

私の経験から、結合テーブル(2つのIDを持つもの)からのみ行を保存または削除できるようにしたい場合は、hasManyとbelongsToの両方の関連付けによって関連付けられた3つのモデルを使用する方がはるかに簡単です。

結合テーブルから直接データを取得して、必要なクエリをはるかに簡単に実行することもできます

これは、CakePHPのドキュメントがHABTMを参照してデータを保存すると言っていることです。

ただし、ほとんどの場合、HABTMアソシエーションを使用する代わりに、上記の例に示すように、結合テーブルのモデルを作成し、hasMany、belongsToアソシエーションを設定する方が簡単です。

ここでより多くの全文を見つけることができます:http: //book.cakephp.org/2.0/en/models/saving-your-data.html#what-to-do-when-habtm-becomes-complicated

私はこのメソッドを「読み取り」テーブル(post_idとuser_id)だけでなく、サブスクリプションや同様の種類の関係にも使用しました。

于 2012-12-07T09:36:33.037 に答える
1

最初の方法は「hasAndBelongsToMany」と呼ばれます[詳細はこちら]

2つ目は「hasManythrough」と呼ばれます[詳細はこちら]

「hasManythrough」に関連する2番目のリンクには、いつ、なぜそれを使用するかについての詳細と長い説明があります。

于 2012-12-07T04:37:42.557 に答える
0

Cakephpの詳細についてはわかりませんが、一般に、リレーションモデルを明示的に定義すると、たとえば、このリレーションの作成時に何らかの検証を行ったり、コールバックを追加したりする場合に、より詳細に制御できます。

于 2012-12-07T00:14:39.640 に答える