【问题标题】:Change item of a session array in Laravel在 Laravel 中更改会话数组的项目
【发布时间】:2019-02-22 04:01:19
【问题描述】:

我使用Laravel 5.6,使用session数组存储用户登录后的详细信息。

user_date = array:19 [
  "userEmail" => "user@user.com"
  "username" => "userwebtest"
  "role" => "user"
  "gender" => "male"
  "profilePic" => "https://domain/public/images/male.jpg"
  "temporaryMobile" => null
  "communicationEmail" => "user@user.com"
  "userId" => "---"
  "registrationDate" => "2018-08-22T07:37:59.603Z"
  "emailVerified" => false
  "__v" => 0
  "mobile" => "---"
  "cart" => []
  "socialLinks" => []
]

现在,在某些事件中,在 OTP 验证后说 update 手机号码,我只想更新移动对象。

如果我这样做Session::put("user_data['temporaryMobile']",'+91'.$request->get('new_number'));,它将覆盖整个对象。

所以我能想到的就是$data = Session::get('user_data') 并更新$data 数组,然后将其放回会话Session::put("user_data",$data)

我希望有一个更好的解决方案,寻找一个解决方案,我们可以只更改数组项而不将数据存储在不同的变量中。

TIA

【问题讨论】:

  • @ankitpatel 我认为您的评论应该是一个答案。

标签: php laravel session laravel-5.6 laravel-session


【解决方案1】:

你可以使用点符号

Session::put('user_data.temporaryMobile','yourmobilenumber');

这样您就不需要覆盖整个用户数据。

【讨论】:

    【解决方案2】:

    你应该试试这个:

    Session::put('user_data.temporaryMobile','yourmobilenumber');
    

    Session::push('user_data.temporaryMobile','yourmobilenumber');
    

    【讨论】:

      【解决方案3】:

      使用 Session 面对:

      Session::put('user_data.temporaryMobile','yourmobilenumber');

      使用全局 session()
      您可以覆盖多个项目

      $user= session('user_data');
      $user['temporaryMobile'] = 'yourmobilenumber';
      session(['user_data'=>$user]);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-14
        • 2017-01-07
        • 2017-01-08
        • 2016-12-10
        • 1970-01-01
        • 1970-01-01
        • 2016-11-10
        • 2018-04-16
        相关资源
        最近更新 更多