Angularjs Laravel会话::忘记方法更改JSON Get请求输出

Angularjs Laravel会话::忘记方法更改JSON Get请求输出,angularjs,json,laravel,session,laravel-5,Angularjs,Json,Laravel,Session,Laravel 5,更新: 我认为出现问题是因为可以从会话数组中删除最后一个密钥号,但如果不删除最后一个密钥号,则会得到不同的格式。还不知道如何解决这个问题 我目前正在通过angular请求存储和检索数据 它从Laravel会话数组中放置和检索值 // Code for pushing into Laravel Session Array Session::push('cart', $object); // Code for retrieving data into Laravel Session Array

更新:

我认为出现问题是因为可以从会话数组中删除最后一个密钥号,但如果不删除最后一个密钥号,则会得到不同的格式。还不知道如何解决这个问题


我目前正在通过angular请求存储和检索数据 它从Laravel会话数组中放置和检索值

// Code for pushing into Laravel Session Array
Session::push('cart', $object); 

// Code for retrieving data into Laravel Session Array
return Session::get('cart'); 
现在我使用foreach循环来更新数量或者这个问题的位置 是关于:在以下情况下从Laravel会话数组购物车中删除对象: 数量为0

public function updateQuantity($id, $quantity, $operator){
    $cart = Session::get('cart', []);

    foreach ($cart as $index => &$product) {
        if ($product['id'] == $id) {
            if($operator == '+'){
                $product['quantity'] = $product['quantity'] + $quantity;
            } else if($operator == '-'){
                $product['quantity'] = $product['quantity'] - $quantity;
                if($product['quantity'] == 0){
                    Session::forget('cart.' . $index);
                    $cart = Session::get('cart', []);
                    Session::push('cart', $cart);
                }
            }
            Session::set('cart', $cart);
            $this->new_product = false;
            break;
        }
    }
    return $this->new_product;
}
上面这部分代码正在改变我的JSON输出:

Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
[
  {
   "id":293,
   "quantity":2
  },
  {
   "id":294,
   "quantity":2
  }
]
{"1":{"id":293,
      "quantity":2}
}
[
  {
   "id":293,
   "quantity":2
  }
]
Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
Session::forget('cart.' . $index);
Session::get('cart', []);
return null;
JSON删除前的情况:

Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
[
  {
   "id":293,
   "quantity":2
  },
  {
   "id":294,
   "quantity":2
  }
]
{"1":{"id":293,
      "quantity":2}
}
[
  {
   "id":293,
   "quantity":2
  }
]
Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
Session::forget('cart.' . $index);
Session::get('cart', []);
return null;
JSON删除后的情况:

Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
[
  {
   "id":293,
   "quantity":2
  },
  {
   "id":294,
   "quantity":2
  }
]
{"1":{"id":293,
      "quantity":2}
}
[
  {
   "id":293,
   "quantity":2
  }
]
Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
Session::forget('cart.' . $index);
Session::get('cart', []);
return null;
但应为:

Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
[
  {
   "id":293,
   "quantity":2
  },
  {
   "id":294,
   "quantity":2
  }
]
{"1":{"id":293,
      "quantity":2}
}
[
  {
   "id":293,
   "quantity":2
  }
]
Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
Session::forget('cart.' . $index);
Session::get('cart', []);
return null;
这是我的角度Get请求,它只调用:
returnsession::Get('cart')

任何帮助都将不胜感激。不确定是什么导致我的json数组转换为不同的数据模型


附加说明:当我在会话中添加最后一个对象并再次删除同一个对象时,它会按预期工作。当我切换删除顺序时,它会弄乱json。

更新了更好的解决方案:

Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
[
  {
   "id":293,
   "quantity":2
  },
  {
   "id":294,
   "quantity":2
  }
]
{"1":{"id":293,
      "quantity":2}
}
[
  {
   "id":293,
   "quantity":2
  }
]
Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
Session::forget('cart.' . $index);
Session::get('cart', []);
return null;
从另一篇stackoverflow文章中得到了这背后的理论:

此处的代码调整:

Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
[
  {
   "id":293,
   "quantity":2
  },
  {
   "id":294,
   "quantity":2
  }
]
{"1":{"id":293,
      "quantity":2}
}
[
  {
   "id":293,
   "quantity":2
  }
]
Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
Session::forget('cart.' . $index);
Session::get('cart', []);
return null;
将是:

Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
[
  {
   "id":293,
   "quantity":2
  },
  {
   "id":294,
   "quantity":2
  }
]
{"1":{"id":293,
      "quantity":2}
}
[
  {
   "id":293,
   "quantity":2
  }
]
Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
Session::forget('cart.' . $index);
Session::get('cart', []);
return null;
获取会话购物车值

return json_encode(array_values(Session::get('cart')));
唯一需要做的就是使用
数组\u值。这将对json数组重新编号


旧解决方案:

Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
[
  {
   "id":293,
   "quantity":2
  },
  {
   "id":294,
   "quantity":2
  }
]
{"1":{"id":293,
      "quantity":2}
}
[
  {
   "id":293,
   "quantity":2
  }
]
Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
Session::forget('cart.' . $index);
Session::get('cart', []);
return null;
通过更换以下部件解决了此问题:

Session::forget('cart.' . $index);
$cart = Session::get('cart', []);
Session::push('cart', $cart);
将下面的代码作为替换:

Session::forget('cart.' . $index);
$temp_cart = Session::get('cart', []);
Session::forget('cart');
foreach($temp_cart as $c){
   Session::push('cart', $c);
}
return null;
不要认为这是最好的解决方案,因为我正在重建整个会话阵列,所以欢迎任何想法