Laravel で、reddits のような安全な賛成/反対投票システムや、偽の ajax リクエストでロードできないスタック オーバーフローのシステムを作成するにはどうすればよいでしょうか。(専門用語がわからなかったらすみません)。
私は3つのテーブルを持っています:
**User**
id
**Post**
id
**Vote**
id
user_id
post_id
vote (int)
私の一般的な考えは、賛成票または反対票ボタンがクリックされたときに、JQuery を使用して、post_id と投票 (賛成票の場合は 1、反対票の場合は -1) を持つ POST データで AJAX を起動することです)。これは、VotesController@vote ルートによって選択されます。投票メソッドは、ユーザーが認証されているかどうかを確認し、同じユーザーと同じ投稿からの投票があるかどうかを確認し、投票が存在する場合: 変更 (反対投票)、そうでない場合は追加します (賛成投票)。
これが私のちょっとした疑似コードです
function vote()
{
//Checks if user is logged in
if(Auth::check()){
//checks if ajax request
if (Request::ajax())
{
//get my data
$post = Input::post('post');
$vote = Input::post('vote');
$user = Auth::user()->id;
//checks if user voted
$vote = querythatisnotyetcoded
//if row exists
if($vote->count() > 0){
//change row AKA DOWNVOTE
Vote->vote = $vote // however you change values
}
else{
//add new row AKA UPVOTE
Vote::create([
'user_id' => $user,
'post_id' => $post,
'vote' => $vote
]);
}
}
else{
return "No Ajax Request";
}
}
else{
return "Not logged in";
}
}
そのロジックが安全かどうか教えてください。
*編集: コードが半分茶色になっている理由がわからない (修正済み!)