2017-08-05 70 views
0

我已經使用了laravel的make:auth並且正在玩弄註冊部分。我試圖將用戶的輸入與我的數據庫中已有的值進行比較,如果存在,那麼用戶將繼續註冊,如果不存在,則會將用戶轉到其他頁面。現在,在執行該功能之後,它會直接將用戶帶到另一個頁面。什麼似乎是問題?laravel 5.4 - 比較用戶輸入的db值

public function register(Request $request) 
{ 
    $name = $request->name; 
    $lastname = $request->lastname; 
    $check = DB::table('records')->where([ 
     ['firstname','=',$name], 
     ['lastname','=',$lastname] 
     ])->get(); 
    if ($check===null) { 
     $this->validator($request->all())->validate(); 

     event(new Registered($user = $this->create($request->all()))); 

     $this->guard()->login($user); 

     return $this->registered($request, $user) 
         ?: redirect($this->redirectPath()); 
    } else { 
     return redirect('/'); 
    } 

} 

回答

0

get()方法返回一個collection,因此,如果沒有記錄$check將類似於

$a = collect([]); 

$a === null // returns false 
$a->isEmpty(); // returns true 
count($a); // returns 0 

所以你可能想使用一個不同的比較你if子句,這將是

如果那麼它存在的用戶將着手登記

if (!$check->isEmpty()) { 
    // proceed to registration 
} else { 
    // redirect 
} 
+1

我今天新學到了一些東西!謝謝 – user23