2017-09-09 38 views
0

我试图从Session中删除数组项。我已经表明下列方式数组元素:Laravel:从会话中删除数组项目

<?php $i=1; ?> 

@foreach(Session::get('product') as $row) 
    <tr> 
     <td> 
      <img src="{{asset('files/'.$row->thumbnil)}}" class="img-thumbnail" alt="" width="90px"> 
     </td> 
     <td>{{$row->name}}</td> 
     <td> 
      <a href="{{asset('deleteEnquote/'.$row->id)}}"> 
       <button class="btn btn-danger btn-sm"><i class="fa fa-remove"></i></button> 
      </a> 
     </td> 
    </tr> 
<?php $i++; ?> 
@endforeach 

这就是我是如何试图删除关键要素:

public function deleteEnquote($id) 
{ 

    $remove = Product::where('id',$id)->first(); 

    if(Session::has('product')){ 
     foreach (Session::get('product') as $key => $value) { 
      if($value === $remove){ 
       Session::pull('product.'.$key); // retrieving pen and removing 
       break; 
      } 
     } 
    } 

    return redirect('enquote'); 
} 

但问题是我无法从删除相应的元素Array.Means元素不被删除。如何从Session Array中删除特定的元素?

回答

0

你需要做这样的事情:

  1. 获取阵列。
  2. 使用unset函数删除该密钥。
  3. 将更新后的数组再次设置为具有相同密钥的会话。

    $product = Session::get('product'); //step 1 
    unset($product[$key]);    //step 2 
    Session::put('product', $product); //step 3 
    
0

如果产品是你的会话数组,然后使用下面的代码:

if(Session::has('product')){ 
    foreach (Session::get('product') as $key => $value) { 
    if($value === $remove){ 
     session()->forget('product.'.$key) 
     break; 
    } 
    } 
} 
+1

代码只答案是沮丧,因为他们没有解释他们是如何解决问题的问题。请更新您的答案以解释如何解决问题。请回顾[我如何写出一个好的答案](https://stackoverflow.com/help/how-to-answer) – FluffyKitten