質問: ブログなどを作成する際に記事とタグのモデルを作ると思いますが、 その際にモデルのアソシエーションをどのようにしようか迷っています。 hasAndBelongsToManyを使ってアソシエーションを定義しようかと思っていますが、 「CakePHP2実践入門」には複雑になるためあまり使われることがないとの記載があり、 他の方法がないかを探しています。
回答: hasManyとbelongsToを組み合わせて使う、hasMany throughでOKです。 hasAndBelongsToManyは処理が複雑になるうえ、中間テーブルの更新の際にデータが一度削除されて再作成されるため、中間テーブルに追加の情報を持つことができません。 hasMany throughであれば、記事ごとのタグの表示順のようなデータを中間テーブルに持って利用できます。 参考 Cookbook2.x アソシエーション-hasMany through