0

と のデータベース テーブルがPostsありcommentsます。
ユーザーがコメントや投稿ごとに好き嫌いを付けられるようにしたい。
だから..私はこれを行うアイデアがほとんどありません。私が正しいかどうか教えてください。

コメント テーブルに 2 つの追加の列を作成します。

likes | liked_uids

人がいいねボタンをクリックすると、likesフィールドの現在の値に +1 が追加されます。それ以外の場合は、現在の値に -1 が追加されます。ユーザーの ID をliked_uids「-」ダッシュで区切られた文字列としてフィールドに追加します。次に、その文字列を配列に取得して、
現在のユーザー ID が記録されているかどうかを確認できます。ユーザーIDがそうであれば、ユーザーが好みで参加したと判断できます。

しかし、私はこの構造にほとんど問題はありません.複数のユーザーが一度に投稿を気に入るとどうなるでしょうか? 次に、文字列から一部のデータを失う可能性がありliked_uidsます (最後の uid)。

これを行う正しい方法を教えてください。

4

3 に答える 3

1

このように作成できます->

id type ('comment/like') uid comment      post_id
1   comment               1   good post    100
2    like                 2   null         101
3   like                  1  null          102
4   comment               3  bad post      104

いいね数を保存することはお勧めしません。特定の投稿のいいね数をカウントしたい場合:

select count(*) from tableName where post_id = 100

区切り文字で区切られたユーザー ID を保存すると問題が発生するため、お勧めしません。区切り文字を使用してストアのユーザー ID を更新または取得するのは、整理整頓の仕事になります。

特定のユーザーが特定の投稿を気に入ったかどうかを確認するには、以下のクエリを使用します。

select count(*) from tableName where post_id = 100 AND uid =1
于 2013-11-05T07:32:42.517 に答える
0

携帯で入力するのが遅すぎます^^ すでにすべて回答済みです。

私は似たようなことをしたことはありませんが、コメント テーブルに 2 つの列を追加しませんでした。「投票」のような新しいテーブルを作成すると、次の列が表示されます。

comment_ref | like | user_ref

誰かがコメントを気に入るたびに、そこに新しい行を挿入します。また、comment_ref と user_ref の組み合わせをキーとして作成することもできるため、2 回挿入することはできません。

最終的には、単一のコメントの投票を取得するためにクエリを作成するだけです。

SELECT COUNT(*) FROM votes WHERE comment_ref = 123
于 2013-11-05T07:39:01.287 に答える
0

1 つの方法は、Likes、DisLikes、Likes_UID、DisLikes_UID の持つ別のLikesテーブルと、コメントといいね! のマッピング テーブルを使用することです。

于 2013-11-05T07:32:44.747 に答える