在 Laravel 中更改会话数组的项目

Change item of a session array in Laravel

我正在使用 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

你可以使用点符号

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

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

你应该试试这个:

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

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

使用 会话 面对:

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

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

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