2016-10-08 12 views
0

私はトークン(ランダムに生成されたキー)を持っている人だけに登録しようとしますが、私はトークンの入力をデータベースと比較することはできません。Laravel固有の登録トークン

私はこの試みた:私は常に404 Not Foundエラーを取得

$token = Tokens::findOrFail($data['register_token']); 

       if($token) { 

        return User::create([ 
         'first_name' => $data['first_name'], 
         'last_name' => $data['last_name'], 
         'register_token' => $data['register_token'], 
         'email' => $data['email'], 
         'password' => bcrypt($data['password']), 
         'role' => 'student', 
        ]); 

       } 
       else { 

        return redirect('/register')->with('unkown_token', 'This Token does not exist!'); 


       } 

を。私は

+0

あなたのトークンのテーブル構造は何であるべきか? –

答えて

0

FindorFailが主キーに動作します $string = str_random(40);

おかげでトークンを生成しました。

カスタム列の場合は、protected $primaryKey='custom_column_name'をモデルに追加します。しかし、そうしたくない場合は、以下の正規の条件付きクエリを試してみてください。

$token = Tokens::where('register_token',$data['register_token'])->firstOrFail(); 
+0

ありがとう、それは私のために働いたが、私はまだlocalhost:8000/registerを見つけることができないので、404エラーを受け取るが、彼はルートを見つけることができるビューの ''にある?正しいトークンを使用して今すぐ登録することができますが、まだ404エラーが表示されません。 –

+0

'firstOrFail'でtableの結果を検索し、見つからなければ例外をスローします。したがって、トークンが見つからない場合に '/ register'ルートをリダイレクトするには、firstOrFail()の代わりにfirst()を使用し、結果が見つからない場合はnullを返し、else条件で/ register urlをリダイレクトします。 –

0

register_tokentokensテーブルの主キーでない場合は、404を取得することは論理的です。 findOrFail($id)には、$idがそのテーブルのprimary keyであることを覚えておいてください。 register_tokenがあなたのprimary keyではなく、あなたがregister_tokenに基づいて照会する場合は、あなたのクエリは

$token = Tokens::where('register_token', $data['register_token'])->firstOrFail(); 
関連する問題