2017-03-24 2 views
0

最近CRUDシステムで作業していますが、ログインしたユーザーが自分のWebサイトに製品を作成すると自動的に名前が付けられます私の製品テーブルに外部キーとして挿入されます。-Laravel 5.2製品を作成するときにユーザーの外部キーを自動的に製品テーブルに挿入する

これは私が作った製品モデルです。

//inkoopprijs = sell price 
//verkoop prijs = buy price 
//naam = product name 


protected $fillable = ['naam', 'inkoopprijs', 'verkoopprijs','users_id','created_at', 'updated_at']; 

protected $table = "product"; 

これはあなたがそうのようEloquent eventsでこれを行うことができ、私のProductControllerストア機能

public function store(Request $request) 
{ 
    $product = Product::create($request->only(['naam', 'inkoopprijs', 'verkoopprijs', 'users_id'])); 

    return redirect(route('product.index')); 
} 
+0

あなたはすでに 'users_id'を持っていますので、すでにユーザー名を取得できますか? – Jerodev

+0

私が意味するのは、製品を作成するときにidが自動的に製品テーブルに挿入されるというIDが1のidである「test」としてログインしたときです。 –

答えて

1

あなたは我々はまた、私は、これはあなたが何を意味するのかであると思いますAuth::id();

Product::create([ 
    'naam' => $request->get('naam'), 
    'inkoopprijs' => $request->get('inkoopprijs'), 
    'verkoopprijs' => $request->get('verkoopprijs'), 
    'users_id' => \Auth::id() 
]); 

と識別子にアクセスすることができますAuth::user();またはauth()->user();

と現在ログインしているユーザーにアクセスすることができます。

+0

これは大変ありがとうございます。それが働くことを望みます。 –

1

です:あなたは、フォームでユーザーIDと隠しフィールドを使用するだけに必要なことができ

Product::creating(function ($product) { 
    $user = auth()->user(); 
    $product->users_id = $user->id; 
}); 
1

フォーム内のユーザーIDを使用するセキュリティの側面を考慮してください。それは使用している場所によって異なります。あなたがすでに認証されているこのメソッドを使用することができます。

<input type="hidden" name="users_id" value="{{Auth::user()->id}}"> 
関連する問題