要添加到购物车,客户必须登录,在购物车表中,我有一列代表user_id,但在user_id列中,数据库中的所有user_id都添加了!例如,对于product1,所有user1,user2,user3 ide不仅添加了一个已登录的用户在
购物车表:
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');
}
出什么问题了?
答案 0 :(得分:1)
您当前正在通过执行$user_id = User::get('id');
来请求所有用户ID,因此,如果要将user_id设置为经过身份验证的用户ID,则需要替换:
$user_id = User::get('id');
if (empty($user_id)){
$user_id = Auth::user()->id;
}
作者:
$user_id = Auth::user()->id;
或更短的版本:
$user_id = Auth::id();