4

初めてORMを使おうとしていますが、次のようなモデルを定義しました。

ユーザーモデル:

class User extends Eloquent
{
    public function friends()
    {
       return $this->has_many_and_belongs_to('User', 'friends', 'user1_id', 'user2_id');
    }    
}

フレンドモデル:

class Friend extends Eloquent
{
    public function friend()
    {
        return $this->belongs_to('User', 'user_id');
    }    
}

友達のmysqlテーブル:

id (pkey) # user1_id (references users.user_id) # user2_id (references users.user_id)

$user->friendsフレンドデータベースパラメータは任意の順序である可能性があるため(user1はuser2のフレンドであるか、user2はuser1のフレンドである)、現在使用することで一方的なリストを取得ます。これは、フォロー/フォロワーのアプローチを使用しようとしていた場合は問題ありませんが、相互に対応させたいと考えています。

この種のことを行うための最良の方法は何ですか?複製されたuser1/user2とuser2/user1をデータベースに挿入することは良いアプローチのようには思えず、これをORMに変換する方法すらわかりません。また、Friendモデルはまったく使用されていない/呼び出されていないようです。

友達招待システムでも同様の問題が発生します。

4

1 に答える 1

2

ユーザー間の多対多の関係を探しています! Doctrine: Doctrine - Many to Many Self Referencingでこれを行う方法を確認してください。Doctrine の例は、始めるのに役立つかもしれません。

アイデアは、1 つのエンティティ、ユーザーがあり、それらは互いに友達になることができるということです。

于 2012-11-08T17:25:48.980 に答える