【问题标题】:insert data from session array in laravel 6在 laravel 6 中从会话数组中插入数据
【发布时间】:2020-10-20 11:02:15
【问题描述】:

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           

我在这里尝试插入 value of pid and qnty 正在使用 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 

请给出您的建议-答案等:)

【问题讨论】:

    标签: php arrays laravel associative-array laravel-6


    【解决方案1】:

    如果您的购物车中有 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');
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-25
      • 2021-07-25
      • 2016-06-19
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多