1

我正在使用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" => []
]

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

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

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

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

TIA

4

3 回答 3

3

你可以使用点符号

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

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

于 2018-09-18T07:41:32.203 回答
2

你应该试试这个:

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

或者

Session::push('user_data.temporaryMobile','yourmobilenumber');
于 2018-09-18T07:57:23.770 回答
0

使用Session面对:

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

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

$user= session('user_data');
$user['temporaryMobile'] = 'yourmobilenumber';
session(['user_data'=>$user]);
于 2020-04-24T10:08:23.187 回答