在 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"
}
],

所以我有一个表格,其中有以下字段

---------------------------------------------------------------------------------------------
id(auto increment)  uid(user's id)   pid(product id)   qnty(quantity)   name   email   address
---------------------------------------------------------------------------------------------

在这里我有model称为订单模型

我有一个controller,其中有public function placeorder(Request $request)

我可以使用$request从表单字段中获取值

但是会话数组(关联数组(中的pidqnty呢?

如果我做foreach循环,那么它只给出一个键的值,但我在会话数组中有2个键

$sessionCart=Session::get('cartS');
foreach($sessionCart as $key=>$value){
$pid=$value['pid'];
$qnty=$value['qnty'];
}  

如果我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           

在这里,我正在尝试插入正在使用implode/explodevalue of pid and qnty

老实说,我从未尝试过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 条记录,您还需要再添加一列来对订单进行分组,例如order_tag将包含唯一字符串 第二种方法是将订单表分为两个表

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');
}

最新更新