在Laravel

时间:2018-09-18 07:26:50

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

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

3 个答案:

答案 0 :(得分:3)

您可以使用点表示法

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

因此,您无需覆盖整个用户数据。

答案 1 :(得分:2)

您应该尝试以下操作:

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

OR

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

答案 2 :(得分:0)

面对会话

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

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

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