简体   繁体   中英

Change item of a session array in Laravel

I'm using Laravel 5.6 , using session array to store the user details after login.

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" => []
]

Now, when on some event, say update mobile number after OTP verification I just want to update the mobile object.

If I do this Session::put("user_data['temporaryMobile']",'+91'.$request->get('new_number')); , it will overwrite the entire object.

So all I can think of doing is $data = Session::get('user_data') & update the $data array and then put it back to the session Session::put("user_data",$data)

I hope there's a better solution to this, looking for a solution where we can just alter the array item without storing the data in different variable.

TIA

you can use dot notation

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

so this way you don't need to overwrite entire user data.

You should try this:

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

OR

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

Using Session faced :

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

Using global session() :
you can override multiple items

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM