2

私はCakePHPの初心者です。私はこれをどこでも検索しましたが、それを正しくすることも、何らかのオリエンテーションを見つけることもできないようです。HABTM全体がどのように機能するかはまだわかりませんが、これからもっと学ぶことを期待しています.

ユーザーとフォロワー、投稿 (ツイート) と共有 (リツイート) を使用して、Twitter のようなシステムを実行しようとしています。ユーザーと投稿のモデルをセットアップし、フォロワー (ユーザーとユーザーの間) と共有 (ユーザーと投稿の間) のテーブルを結合しました。モデルの関連付けはどのように設定すればよいですか? 私はいくつかの方法を試してきましたが、それが正しいかどうかはわかりません。

もう 1 つの質問は、ユーザー情報などの不要なデータをすべて取得せずに、1 つの配列内の投稿だけを取得することなく、フォローしているユーザーによるすべての投稿と、そのユーザーが共有した投稿を取得するための適切な検索クエリは何でしょうか? 1 つのクエリで検索を行うことは可能ですか、それとも複数のクエリを実行してから配列をマージする必要がありますか? さらに、このかなり複雑なクエリを適切にフィルタリングして制限する方法を理解することは非常に役立ちます (特定の日付範囲間の「投稿タイムライン」を取得する、投稿を特定の量に制限する、またはその両方)。

私の質問が少しばかげていることは知っていますが、多くの調査を行ったので、正しく理解できないようです. そのため、特にクエリ部分に関するヘルプをいただければ幸いです。

ありがとう!

4

1 に答える 1

1

したがって、これらはいくつかの奇妙な関係になります。次のテーブルが必要だと思います。

  • ユーザー (エイリアスのフォロワーを持つ) は多くのツイートを持っています
  • 投稿の所属ユーザー
  • UsersFollowers (HABTM テーブル)

これを 3 つのテーブルだけで機能させるPostsには、スレッド化されたテーブルである必要があります。基本的に、ある人が投稿をリツイート (共有) すると、新しい投稿parent_id列に元の投稿の ID を持つ新しいレコードが作成されます。次に、レコードが呼び出されると、モデルは追加のデータを取得してフィードに含めることができます。

のエイリアスの側面Usersにより、フォロワー部分を 1 つのテーブルだけで実行できます。人のフォロワーを見つけるには、テーブルの 1 つのキー ( follower_id) で検索し、人がフォローしている人を見つけるには、もう 1 つのキー ( ) で検索しますusers_id

質問の 2 番目の部分については、このセットアップでの検索は非常に簡単なはずですが、Containableおよびthreaded queriesを読みたいと思うかもしれません。テーブルにタイムスタンプ列を含めて、後で日付機能 (または投稿タイムライン) で検索できるようにすることができます。

于 2013-04-19T02:22:14.697 に答える