2016-07-17 8 views
0

私はほとんど私のウェブサイトを完成させました。これはもう1つのフィーチャーで終了します。オブジェクトにphp/laravelの値があるかどうかを確認する

私は、テーブルnew_theme_userを持っている:

1 id 
    2 id_user(integer) 
    3 id_theme(integer) 
    4 upVote(tinyint) 

だから、これはコントローラです:

class Vote extends Controller { 

    public function VoteTheme($id, $vote){ 

     $Vote = DB::table('New_Theme_User')->where([ 
     ['id_theme', '=', $id], 
     ['id_user', '=', Auth::id()], 
     ])->get(); (1!!!) 

     if (!isset($vote)) { (2!!!) 

     if ($vote === 'plus') 

     DB::table('New_Theme_User')->insert([ 
     ['id_theme' => $id, 'id_user' => Auth::id(), 'upVote' => 1], 
     ]); 

     else 

     DB::table('New_Theme_User')->insert([ 
     ['id_theme' => $id, 'id_user' => Auth::id(), 'upVote' => 0], 
     ]); 

     if ($vote === 'plus') { 
      DB::table('New_Themes') 
      ->where('id', $id) 
      ->increment('upVotes', 1); 
     } else { 
      DB::table('New_Themes') 
      ->where('id', $id) 
      ->increment('downVotes', 1); 
     } 
     } 

     $Themes = NewTheme::paginate(5); 

     return redirect()->route('welcome', ['Themes'=>$Themes]); 

    } 
}; 

1 !!! - オブジェクトを作成する選択クエリです(誰かがすでに投票したいテーマ/投稿の前にすでに投票しているかどうかをデータベースで確認するため)。

2 !!! - if文は、値を持たない - これはユーザーが一度投票して情報をDBに取り込むことができることを意味します。

問題:私は(2 !!!)を回避する方法を見つけることができませんでした私はインターネット上で見つけることができるものは何でも、たとえユーザーがもう一度投票しても解決できないようだが、解決策が見つからないようであっても、うまくいきません。あなた!

+0

何の違いのように行うことができますか? – C2486

+0

$ Voteは文字列の値で、ユーザーが投稿を好き嫌いしています。ユーザーが投票した場合は$ voteが選択値、私が名前を変更しなかった場合は悪いです。混乱のために叫ぶ。 – DomainFlag

+0

私はfinearyが$ answer = DB :: table( 'New_Theme_User') - > where([['id_theme'、 '='、$ id]、 ['id_user'、 '='、Auth: :id()]、 ]) - > get(); $ Voteは配列なので、if(空($ Vote))を使うことができます – DomainFlag

答えて

0

NewThemeUserモデル

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class NewThemeUser extends Model 
{ 
    protected $table = 'new_theme_user'; 
} 

今コントローラであなたは$の投票と$投票の間のこの

App\NewThemeUser::firstOrCreate(['id_theme' => $id, 'id_user' => Auth::id()])->increment($upVotes ? 'upVotes' : 'downVotes');//This will fetch the first record if there any exists for the user then increment if $upVotes then the column to increment is upVotes else upVotes 
関連する問題