Change item of a session array in Laravel

2.3k views Asked by At

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

user_date = array:19 [
  "userEmail" => "[email protected]"
  "username" => "userwebtest"
  "role" => "user"
  "gender" => "male"
  "profilePic" => "https://domain/public/images/male.jpg"
  "temporaryMobile" => null
  "communicationEmail" => "[email protected]"
  "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

3

There are 3 answers

0
ankit patel On BEST ANSWER

you can use dot notation

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

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

0
AudioBubble On

You should try this:

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

OR

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

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]);