1

私はCakePHP2.xを使用していますが、HABTM結合テーブルを操作するための組み込み機能があるかどうか疑問に思いました。HABTM関係の属性を直接変更するためのドキュメントには、実際には何も表示されません。これは私が意味することです:

次のように示すことができる2つのモデル間の関係のフラグを含む結合テーブルがあります。

(int) id | (int) user_id | (int) video_id | (bool) hasRated | (bool) hasWatched | (bool) hasDownloaded

最初の列は通常のテーブルIDです。次の2つ(user_idとvideo_id)は、ユーザーテーブルとビデオテーブルへの一般的なHABTM外部キーです。次の3つのフラグは、2つのモデル間の関係を示しています(このビデオは視聴されましたか?評価されましたか?など)。

現在、独自のクエリを作成しています。これがブートストラップの設定です。私の最終目標は、2つのモデルの関係の間に属性を追加することです。これはこれにアプローチする正しい方法ですか、それとももっとケーキのような方法がありますか?

4

2 に答える 2

0

ユーレカ。

2.x では、cake が自動的にモデルを作成し、関係を認識します。

$this->Video->UserVideoHABTM 結合テーブルに適合するモデルを生成しますusers_videos。その後、通常のモデルと同じように操作でき、データベースが更新されます。

于 2012-08-05T13:14:55.110 に答える
0

維持するために、HABTM結合テーブルを維持できます。結合テーブルのケーキ規則HABTMは次のとおりです。

この新しい結合テーブルの名前には、関連する両方のモデルの名前をアルファベット順に、アンダースコア ( _ ) で区切って含める必要があります。テーブルの内容は 2 つのフィールドである必要があり、各外部キー (整数である必要があります) は、関連するモデルの両方の主キーを指しています。問題を回避するには、これら 2 つのフィールドに主キーを組み合わせて定義しないでください。アプリケーションで必要な場合は、一意のインデックスを定義できます。このテーブルに追加情報を追加する予定がある場合は、他のモデルと同じようにテーブルでの操作を簡単にするために、追加の主キー フィールド (慣例により「id」) を追加することをお勧めします。

だから、それはあなたにとってちょうどいいようです. ただし、命名規則に従う必要があります。

詳細については、ドキュメントを参照してください。

于 2012-08-04T06:44:50.483 に答える