2017-03-11 29 views
1

我想通過用戶模型獲取當前用戶,但它返回null。laravel 5.4如何通過用戶模型獲取當前用戶?和Auth :: user()不工作

$user = new User; 
//$user = Auth::user(); 
$product = new Product; 

$product->user_id = $user->user_id; 
$product->save(); 

這是我得到 Integrity constraint violation: 1048 Column 'user_id' cannot be null

當我試圖驗證得到它::用戶(),它給了同樣的錯誤。

這是我的自定義登錄控制器..

public function auth(Request $request) 
{ 
    $this->validate($request, [ 
     'email' => 'required|email|max:255', 
     'password' => 'required|min:6', 
    ]); 

    $data = $request->only('email', 'password'); 

    if (Auth::attempt($data)) { 
     $email = $request->email; 
     $users = DB::table('users') 
      ->where('email', $email) 
      ->select('users.*', 'user_name') 
      ->get(); 

     Session::put('set', $users); 

     if ($users[0]->is_admin == '1') { 
      return redirect()->intended('adminDashboard'); 
     }else{ 
      return redirect()->intended('dashboard'); 
     } 
    }else{ 
     return back()->withInput()->witherrors(['Email or password did not match!']); 
    } 
} 

有什麼不對的代碼?

+0

請提供'登錄Controller'代碼。你做了很多不必要的事情 –

+0

你可以在問題中看到登錄控制器。 –

回答

0

請嘗試:$product->user_id = Auth::id();

+0

給出相同的錯誤。 –

+0

請檢查您是否登錄或不在您的代碼中。 –

+0

我已登錄。只有在您登錄後才能訪問此控制器。您可以看到更新後的問題。 –

0

改變這一行:

$product->user_id = $user->user_id; 

這樣:

$product->user_id = auth()->user()->id; 

或者使用關係創造一個產品:

auth()->user()->product()->create($productData); 
+0

錯誤:嘗試獲取非對象的屬性。 –

+0

@ishanshah你確定你已經登入嗎?當您登錄時,'dd(auth() - > user())'應該返回登錄用戶對象。 –

+0

嘗試改爲'auth() - > user() - > user_id' –

0

如果您得到curr用戶詳細信息比用戶以下代碼。

$loggedInUser = Auth::user(); 

在user表中插入細節

$loggedInUser['data1'] = $data1; 
$loggedInUser['data2'] = $data2; 
$loggedInUser['data3'] = $data3; 

保存用戶詳細

$loggedInUser->save();