从 laravel 6 中的会话数组插入数据
insert data from session array in laravel 6
i want to insert a record of form fields in table and also values from session array
我有一个包含以下字段的表单
name,email,address
我有这样的会话数组'cartS'
"cartS": [
{
"pid": "1",
"qnty": "3"
},
{
"pid": "2",
"qnty": "2"
}
],
所以我有一个 table,其中包含以下字段
---------------------------------------------------------------------------------------------
id(auto increment) uid(user's id) pid(product id) qnty(quantity) name email address
---------------------------------------------------------------------------------------------
这里我有model
叫订单模型
我有一个 controller
其中有 public function placeorder(Request $request)
我可以使用 $request
从表单字段中获取值
但是会话数组(关联数组)
中的pid
和qnty
呢?
如果我做 foreach 循环那么它只给出一个键的值但我在会话数组中有 2 个键
$sessionCart=Session::get('cartS');
foreach($sessionCart as $key=>$value){
$pid=$value['pid'];
$qnty=$value['qnty'];
}
if i return $pid
那么它只给出第一个键的 pid
而不是全部
以下是我的placeorder function
public function placeOrder(Request $request){
$sessionUser=Session::get('userS'); // user's name,email are stored in sessionarray called 'userS'
$sessionEmail=$sessionUser['email']; // i am accessing email of session user
$getUid=customerModel::where('email',$sessionEmail)->count();
// counting userid(uid) from table which should be only one unique in table
if($getUid==1){
$uid=customerModel::where('email',$sessionEmail)->value('uid');
// here i am getting uid of that user
// here i am requesting value of form field
$name=$request->name;
$email=$request->email;
$address=$request->address;
$order=new orderModel;
$sessionCart=Session::get('cartS');
if($sessionCart){
// if $sessioncart is true then following code should run and rest is my garbage code.....
foreach($sessionCart as $key=>$value){
$pid=$value['pid'];
$qnty=$value['qnty'];
}
$order->uid=$uid;
$order->pid=$pid;
$order->quantity=$qnty;
$order->customer_name=$name;
$order->customer_email=$email;
$order->address=$address;
$order->save();
return redirect('checkout');
}
else{
return back();
}
}
else{
return redirect('/');
}
}
我不知道我写上面的函数是对还是错,但我想插入如下记录
如果这不是一个好的方法,请推荐一个:)
----------------------------------------------------------------------------------------------------
id(auto increment) uid(user's id) pid(product id) qnty(quantity) name email address
----------------------------------------------------------------------------------------------------
1 1 1-2 3-2 xyz test@test.com xyz
我在这里尝试插入 value of pid and qnty
are using implode/explode
老实说我从来没有尝试过implode/explode
或
----------------------------------------------------------------------------------------------------
id(auto increment) uid(user's id) pid(product id) qnty(quantity) name email address
----------------------------------------------------------------------------------------------------
1 1 1 3 xyz test@test.com xyz
1 1 2 2 xyz test@test.com xyz
请给出您的建议-答案等等:)
如果您的购物车中有 2 件商品,(我认为)您必须有 2 条订单记录 table,您还需要再添加一列来对订单进行分组,例如 order_tag它将包含唯一的字符串
第二种方法是将订单 table 分成两个 tables
orders(id,user_id,name,email,address, order_status)
order_items(id,order_id,product_id,qnty,price)
然后您就可以轻松找到(查询)订单详情。保存产品看起来像这样
if($sessionCart){
// if $sessioncart is true then following code should run and rest is my garbage code.....
$order=new orderModel;
$order->uid=$uid;
$order->customer_name=$name;
$order->customer_email=$email;
$order->address=$address;
$order->save();
foreach($sessionCart as $key=>$value){
$pid=$value['pid'];
$qnty=$value['qnty'];
$orderItem = new OrderItem;
$orderItem->order_id = $order->id;
$orderItem->product_id=$pid;
$orderItem->quantity=$qnty;
$orderItem->save()
}
return redirect('checkout');
}
i want to insert a record of form fields in table and also values from session array
我有一个包含以下字段的表单
name,email,address
我有这样的会话数组'cartS'
"cartS": [
{
"pid": "1",
"qnty": "3"
},
{
"pid": "2",
"qnty": "2"
}
],
所以我有一个 table,其中包含以下字段
---------------------------------------------------------------------------------------------
id(auto increment) uid(user's id) pid(product id) qnty(quantity) name email address
---------------------------------------------------------------------------------------------
这里我有model
叫订单模型
我有一个 controller
其中有 public function placeorder(Request $request)
我可以使用 $request
但是会话数组(关联数组)
中的pid
和qnty
呢?
如果我做 foreach 循环那么它只给出一个键的值但我在会话数组中有 2 个键
$sessionCart=Session::get('cartS');
foreach($sessionCart as $key=>$value){
$pid=$value['pid'];
$qnty=$value['qnty'];
}
if i return $pid
那么它只给出第一个键的 pid
而不是全部
以下是我的placeorder function
public function placeOrder(Request $request){
$sessionUser=Session::get('userS'); // user's name,email are stored in sessionarray called 'userS'
$sessionEmail=$sessionUser['email']; // i am accessing email of session user
$getUid=customerModel::where('email',$sessionEmail)->count();
// counting userid(uid) from table which should be only one unique in table
if($getUid==1){
$uid=customerModel::where('email',$sessionEmail)->value('uid');
// here i am getting uid of that user
// here i am requesting value of form field
$name=$request->name;
$email=$request->email;
$address=$request->address;
$order=new orderModel;
$sessionCart=Session::get('cartS');
if($sessionCart){
// if $sessioncart is true then following code should run and rest is my garbage code.....
foreach($sessionCart as $key=>$value){
$pid=$value['pid'];
$qnty=$value['qnty'];
}
$order->uid=$uid;
$order->pid=$pid;
$order->quantity=$qnty;
$order->customer_name=$name;
$order->customer_email=$email;
$order->address=$address;
$order->save();
return redirect('checkout');
}
else{
return back();
}
}
else{
return redirect('/');
}
}
我不知道我写上面的函数是对还是错,但我想插入如下记录
如果这不是一个好的方法,请推荐一个:)
----------------------------------------------------------------------------------------------------
id(auto increment) uid(user's id) pid(product id) qnty(quantity) name email address
----------------------------------------------------------------------------------------------------
1 1 1-2 3-2 xyz test@test.com xyz
我在这里尝试插入 value of pid and qnty
are using implode/explode
老实说我从来没有尝试过implode/explode
或
----------------------------------------------------------------------------------------------------
id(auto increment) uid(user's id) pid(product id) qnty(quantity) name email address
----------------------------------------------------------------------------------------------------
1 1 1 3 xyz test@test.com xyz
1 1 2 2 xyz test@test.com xyz
请给出您的建议-答案等等:)
如果您的购物车中有 2 件商品,(我认为)您必须有 2 条订单记录 table,您还需要再添加一列来对订单进行分组,例如 order_tag它将包含唯一的字符串 第二种方法是将订单 table 分成两个 tables
orders(id,user_id,name,email,address, order_status)
order_items(id,order_id,product_id,qnty,price)
然后您就可以轻松找到(查询)订单详情。保存产品看起来像这样
if($sessionCart){
// if $sessioncart is true then following code should run and rest is my garbage code.....
$order=new orderModel;
$order->uid=$uid;
$order->customer_name=$name;
$order->customer_email=$email;
$order->address=$address;
$order->save();
foreach($sessionCart as $key=>$value){
$pid=$value['pid'];
$qnty=$value['qnty'];
$orderItem = new OrderItem;
$orderItem->order_id = $order->id;
$orderItem->product_id=$pid;
$orderItem->quantity=$qnty;
$orderItem->save()
}
return redirect('checkout');
}