要添加到购物车,客户必须登录,在购物车表中,我有一个用户ID列,但在用户ID列中,数据库中所有的用户ID都会添加!例如,对于产品1,所有用户1,用户2,用户3的ID都会添加,而不仅仅是一个登录的用户。
购物车表。
Schema::create('cart', function (Blueprint $table) {
$table->increments('id');
$table->integer('product_id');
$table->char('user_id');
$table->string('session_id');
$table->string('product_name');
$table->string('user_email');
$table->integer('qty');
$table->integer('product_price');
$table->timestamps();
});
控制器中的addToCart方法
public function addtocart(Request $request){
$data = $request->all();
if (empty($data['user_email'])){
$data['user_email'] = ' ';
}
$user_id = User::get('id');
if (empty($user_id)){
$user_id = Auth::user()->id;
}
$session_id = Session::get('session_id');
if (empty($session_id)){
$session_id = Str::random(40);
Session::put('session_id' , $session_id);
}
DB::table('cart')->insert(['product_id' => $data['product_id'] , 'product_name' => $data['product_name'], 'user_id'=>$user_id,
'product_price' => $data['product_price'], 'qty' => $data['qty'], 'user_email' => $data['user_email'] , 'session_id' => $session_id ]);
return redirect('cart');
}
问题出在哪里?
你目前是通过以下方式来请求所有用户id的 $user_id = User::get('id');
所以如果你想把user_id设置为你的认证用户id,你需要替换。
$user_id = User::get('id');
if (empty($user_id)){
$user_id = Auth::user()->id;
}
by:
$user_id = Auth::user()->id;
或更短的版本。
$user_id = Auth::id();