0 レビュー
1 回答
php-ログインしているユーザーがオブジェクトとしてフォローしているすべてのユーザーをフェッチする必要があります
手作りのMVCフレームワークを構築しており、次のシステム(Twitterなど)を実装して、サインインしているユーザーが別のユーザーをフォローできるようにし、サインインしたユーザーが自分のプロファイルにアクセスすると、フォローしている他のすべてのユーザーを確認できるようにします。およびその逆。現在ログインしているユーザーがフォローしているすべてのユーザーを取得するために、どのクエリを適用すればよいかわかりません。それらのフォロワーをオブジェクトとしてフェッチするためにいくつかのSQLクエリを試しましたが、失敗しました。さらに、テーブルのユーザーとフォロー、およびその説明があります。
これはユーザーテーブルです。
これは、複合主キー(user_id、following_user_id)を持つテーブルの後にあり、どちらもテーブルユーザーからの列IDを指す外部キーです
次の表のデータを次に示します
これを試しましたが、すべてのユーザーを(配列として)フェッチしています
SELECT users.id,users.username FROM follows INNER JOIN users ON follows.user_id = users.id;
わからない
0
レビュー
答え :
解決策:
次の2つのテーブルがあると仮定します:
CREATE TABLE `user`
(
`user_id` int AUTO_INCREMENT,
`name` varChar(255),
PRIMARY KEY (`user_id`)
);
CREATE table `user_following`
(
`user_id` int,
`following_user_id` int,
PRIMARY KEY (`user_id`, `following_user_id`),
CONSTRAINT FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`),
CONSTRAINT FOREIGN KEY (`following_user_id`) REFERENCES `user` (`user_id`)
);
これらの値を使用する場合:
INSERT INTO `user` VALUES (1, 'Alice');
INSERT INTO `user` VALUES (2, 'Bob');
INSERT INTO `user` VALUES (3, 'Charlie');
INSERT INTO `user_following` VALUES (1, 2);
次のコマンドを実行すると、「Alice」(ユーザーID = 1)がフォローしているすべてのユーザーを見つけることができます。
SELECT
*
FROM
`user`
WHERE
`user_id`
IN
(SELECT `following_user_id` FROM `user_following` WHERE `user_id` = 1);
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。