2016-12-10 11 views
1

トップ:laravelのコントローラにログインしているユーザーIDの値を取得する方法は?私が追加した私のコントローラの

use Auth; 

機能を私のコントローラで

public function details($id) 
{ 
    if(Auth::check())  
    { 
     $user = Auth::user(); 
     $product = Product::find($id);  

     $cart->product_id = $product->id; 
     $cart->category_id = $product->category_id; 
     $cart->user_id = $user->id; 

     dd($cart->user_id); //check if its storing the value 
    } 
    else { 
    return redirect()->route('login'); 
    } 
} 

を私はこれを実行すると、私はエラーを取得:

Creating default object from empty value 

私がする$ user-を削除した場合> id行にエラーが表示されます。

私はまた、コンストラクタを追加しようとしたが、それでもユーザーがログインしている場合、それは確認した後

public function __construct() { 

    $this->middleware('auth'); 

} 

ddはその他の詳細を示している。

同じエラーを得たログに記録されたユーザIDを取得する方法はあります既定で作成されたユーザーからのユーザーテーブルです。

ありがとうございました!

+0

に忘れてしまった 、次のように試してみてください。 –

答えて

1

問題は$cart->product_idですが、$cart変数は私が見る限りでは定義されていません。 PHPは何をすべきか分からないので、PHPはプロパティを代入しようとするので、PHPは$cartをクラスとし、したがって「空の値からデフォルトオブジェクトを作成する」というメッセージを受け取ります。

これ以外にも、ミドルウェアを使用してユーザーを認証し、Eloquentモデルのリレーションシップを使用してリレーションIDを手動で割り当てないようにすることでコードを改善できます。

+0

そう、私は愚かです。ありがとう:) – Phoenix

1

は、あなたがルートを保護するためのミドルウェアを使用してではなく、ユーザーが認証され、あなたのコントローラーアクションにチェックしなければならないイニシャルカートオブジェクト

$cart = new Cart; 
$cart->product_id = $product->id; 
$cart->category_id = $product->category_id; 
$cart->user_id = $user->id; 

dd($cart->user_id); //check if its storing the value 
+0

ああ愚かな私。ありがとう:) – Phoenix

関連する問題