Я бы создал отдельную таблицу с именем user_post, в которой были бы user_id и post_id - фактически, вы можете сделать эти столбцы первичным ключом из нескольких столбцов.
Когда пользователь голосует за сообщение, вы можетеиспользуйте следующий запрос:
REPLACE INTO user_post (user_id, post_id, vote) VALUES (:userId, :postId, :vote)
Replace, по сути, говорит: «вставьте, если нет конфликта уникальных ключей, если это так, обновите строку».Или вы можете использовать:
INSERT IGNORE INTO user_post (user_id, post_id, vote) VALUES (:userId, :postId, :vote)
, что, по сути, говорит: «вставьте, если нет конфликта уникальных ключей, если так, игнорируйте» (если вы хотите сохранить только первый голос).