2016-10-08 86 views
0

我嘗試僅爲擁有令牌(隨機生成的密鑰)的人員進行註冊,但我遇到的問題是我無法將我的令牌輸入與數據庫進行比較。Laravel獨特的註冊令牌

我嘗試這樣做:

$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!'); 


       } 

我總是得到一個404未找到錯誤。我生成的令牌與 $string = str_random(40);

感謝

+0

什麼是你的代碼表的結構? –

回答

0

FindorFail工作在主鍵。

對於自定義列,請在模型中添加protected $primaryKey='custom_column_name'。但是,如果你不想這樣做,那麼請嘗試下面給出的常規條件查詢。

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

謝謝,這對我有用,但我仍然得到一個404錯誤,因爲他無法找到localhost:8000/register,但在''在視圖中他可以找到路由?有了一個正確的令牌,我現在可以註冊,但是如果沒有,我仍然會得到一個404錯誤 –

+0

'firstOrFail'在表中搜索結果,如果沒有找到,則會拋出異常。因此,如果未找到令牌,爲了重定向'/ register'路由,只需使用first()而不是firstOrFail(),如果未找到結果,則返回null,否則您的其他條件將重定向/註冊url。 –

0

register_token如果不是tokens表的主鍵,得到404是合乎邏輯的。請記住,在findOrFail($id),$id是該表的primary key。如果register_token是不是你的primary key,你想查詢的基礎上register_token然後將查詢應該是

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