私は Yii フレームワークを使用していますが、Friend/Connection スタイルのシステムを構築しているときに問題に遭遇しました。標準のユーザー テーブルがあり、フレンドを保存するために、次のレイアウトのフレンド テーブルがあります (適切な FK などが設定されています)。
id | userId | friendId | and some other fields...
「友達」は相互的なものであるため、ユーザー A がユーザー B と友達である場合、ユーザー B はユーザー A と友達です。したがって、「友達関係」ごとに 1 つのエントリしかありません。
私がやろうとしているのは、Yii のリレーショナル クエリを使用して、最終的に友人に属するアイテムを返すことです。現在、 User モデルに次の関係があります...
'friends' => array(self::HAS_MANY, 'UserFriend', 'userId'),
ただし、ユーザーの ID が userId フィールドに存在する場合にのみ、「友達」が返されます。ユーザーの ID が friendId フィールドにある場合、「友情」は認識されません。
「OR」を使用してクエリを実行する方法はありますか? たとえば、ユーザー ID == userId OR ユーザー ID == friendId の場合、そのエントリを返しますか?
さらに、Yii に他の ID を返させる方法はありますか? ユーザー ID == userId の場合は friendId を返し、ユーザー ID == friendId の場合は userId を返しますか?
私は最終的に次のようなことをしようとしています:
$userModel = User::model()->findByPk(Yii::app()->user->id); // user's model
$userFriends = $userModel->with(items)->friends; // return friends with their items
あまり混乱していないことを願っています!説明下手でごめんなさい
ありがとう :)