0

ACL コンポーネントによって生成されたテーブル (aros、acos) と、たとえば CakeDC による Favorites プラグインを見るfavoritesと、フィールドFavorite.user_idFavorite.modelおよびを含むテーブルが表示されますFavorite.foreign_key
最後の 2 つの組み合わせは、古き良きものに取って代わります (価値があるとFavorite.post_id仮定します)。これはある意味で、片側に動的なモデル名を持つ HABTM ピボット テーブルです。 ここで一般的で便利なアイデアを見ることができますが、そのアプリケーションについてもっと知りたいです。model'Post'

私の質問:

  • このパターンに名前はありますか?
  • これはコード的にどのように機能しますか? 抽象的な原理はわかりますが、これを機能させるにはどのようなモデルコードが必要ですか? クエリのパッチワークが必要ですか、それとも 1 つのクエリでスムーズに実装できますか? 例: システム内のお気に入りとしてマークされたすべての投稿と、それに関連するユーザーを一度に取得したいと考えています。
  • そして、これは両方の方法で機能しますか?(Post モデルと User モデルの両方からクエリを実行)

このパターンを処理するために動作を配置する抽象化に取り組みたいと思います。私は CakeDC コードを調べましたが、原理を理解できませんでした。それは私の現在の知識には少し難解です。したがって、ここで私の質問です。

よろしく、
バート

4

1 に答える 1

0

このパターンに名前はありますか?

http://en.wikipedia.org/wiki/Junction_table別名結合テーブル。

これはコード的にどのように機能しますか? 抽象的な原理はわかりますが、これを機能させるにはどのようなモデルコードが必要ですか? クエリのパッチワークが必要ですか、それとも 1 つのクエリでスムーズに実装できますか? 例: システム内のお気に入りとしてマークされたすべての投稿と、それに関連するユーザーを一度に取得したいと考えています。

これは単なる通常の結合テーブルです。それだけです。HABTM assoc を使用するときに CakePHP が構築しているものに依存するか、結合を使用してクエリを絞り込むことができます。http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#joining-tablesを参照してください。

その「パターン」ではモデル フィールドは必要ありませんが、多くの異なるテーブル/モデルに使用できる結合テーブルを 1 つだけ持つことができます。たとえば、tags_posts と tags_users でタグとユーザーと投稿を関連付ける代わりに、同じテーブルを使用してモデル フィールドでフィルター処理するだけです。

そして、これは両方の方法で機能しますか?(Post モデルと User モデルの両方からクエリを実行)

両方のモデルで HABTM 関連付けを設定した場合は、はい。

プラグインをご利用いただきありがとうございます。;)

于 2012-10-18T22:42:33.573 に答える