2017-03-11 4 views
1

Ich versuche, den aktuellen Benutzer durch Benutzermodell zu erhalten, aber es gibt null zurück.Laravel 5.4 Wie bekomme ich den aktuellen Benutzer durch Benutzermodell? und Auth :: user() funktioniert nicht

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

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

Dies ist, was ich Integrity constraint violation: 1048 Column 'user_id' cannot be null

, wenn ich es mit Auth :: Benutzer zu erhalten versucht(), es gleiche Fehler gibt.

Dies ist meine benutzerdefinierte Login-Controller ..

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

Was ist mit diesem Code falsch?

+0

Bitte geben Sie 'Anmeldung Controller' Code. Sie haben so viele Dinge unnötig gemacht –

+0

Sie können den Login-Controller in der Frage sehen. –

Antwort

0

Bitte versuchen Sie es: $product->user_id = Auth::id();

+0

Gibt den gleichen Fehler. –

+0

Bitte überprüfen Sie, ob Sie sich in Ihrem Code einloggen oder nicht. –

+0

Ich bin angemeldet. Auf diesen Controller kann nur zugegriffen werden, wenn Sie eingeloggt sind. Sie können die aktualisierte Frage sehen. –

0

Ändern Sie diese Zeile:

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

dazu:

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

Oder Beziehung verwenden, um ein Produkt zu erstellen:

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

Fehler: Der Versuch, die Eigenschaft von Nicht-Objekt zu erhalten. –

+0

@ishanshah Sind Sie sicher, dass Sie eingeloggt sind? Wenn Sie angemeldet sind, sollte 'dd (auth() -> user())' das angemeldete Benutzerobjekt zurückgeben. –

+0

Versuchen Sie stattdessen 'auth() -> user() -> user_id' –

0

Wenn Sie bekomme curr ent Benutzerdetails als Benutzer bellow code.

$loggedInUser = Auth::user(); 

Eingeben in Benutzertabelle

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

speichern Benutzerdaten

$loggedInUser->save(); 
Verwandte Themen