一部のデータの取得に問題があります....誰かが私を助けることができるかどうか疑問に思っていました.
4 つのテーブルがあります (いいね、フォロー、コメント、ユーザー)
ユーザーがいいね/コメント/フォロー/etc... (ユーザーが特定のユーザーをフォローしている場合) のときに、自分のページにデータを入力できるようにしたいと考えています。
好き
idlikes idusers iditem
1 1 5
2 2 4
3 2 22
従う
idfollow idusers_follower idusers idbusiness
1 1 2
2 1 3
3 1 4
4 4 2
5 4 1
コメント
idcomments idusers text
1 1 asfd
2 2 safd
ユーザー
idusers
1
2
3
4
たとえば、ID ユーザー #1 の場合、ユーザー #2、#3、#4 をフォローしています
私のページには次のように表示されます。
- #2 は項目 #4、#22 が好きです。
- #4 は #2 をフォローしています (私は #4 をフォローしているため、これが表示されます)
- #2 件のコメント
これを表示する最良の方法がわかりませんか?現在、一度に複数の関数がテーブルに対してクエリを実行しており、配列をマージする作業を行っていますか? または、結合テーブルを使用する必要がありますか? 私が今しようとしているのは...
私がフォローしているユーザーを取得します。
$feeds = new feed();
$meID = 1;
$query = "SELECT idusers FROM follow WHERE iduserse_follower = ?";
$users = $dbh -> prepare($query);
$users -> execute(array($meID));
while($following = $users -> fetch(PDO::FETCH_ASSOC)){
$follow = $following['idusers']; //This will get all of useres I'm following
$populate = $feeds->feed_all($follow); // from function
}
クエリ
class feed()
{
public function feed_all($idusers)
{
// SYNTAX HELP //////////////////////
$query = "SELECT
f.idusers_follower,
f.idusers,
l.iditem,
c.text
FROM follow f, users u
JOIN likes l
ON l.idusers = f.idusers
JOIN comment c
ON c.idusers = f.idusers
WHERE f.idusers_follower = ? AND f.idusers_follower = l.idusers AND f.idusers_follower = c.idusers AND f.idusers = u.idusers"
$pop = $dbh->prepare($query);
$pop ->execute($idusers);
// while loop to return value
while($row = $pop -> fetch(PDO::FETCH_ASSOC))
{
$feed_data[]=$row;
}
return $feed_data;
}
}
これは私が立ち往生しているところです。:( ステートメントを正しく行っているかどうかさえわかりませんか?
++++++++++ 編集: ++++++++++++
idbusinessを追加するために編集しました
私は #4 をフォローしているので、#4 が #1 をフォローしていることも示されます。