Изменить элемент массива сеансов в 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" => []
]

Теперь, когда на каком-то событии, скажем, update номер мобильного телефона после проверки OTP Я просто хочу обновить мобильный объект.

Если я сделаю это Session::put("user_data['temporaryMobile']",'+91'.$request->get('new_number'));, он будет перезаписывать весь объект.

Так что все, что я могу думать, это $data = Session::get('user_data') и обновить $data массив, а затем положить его обратно в сессию Session::put("user_data",$data)

Я надеюсь, что есть лучшее решение для этого, ища решение, где мы могли бы просто изменить элемент массива, не сохраняя данные в другой переменной.

ТИА

2 ответа

Решение

Вы можете использовать точечную запись

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

Таким образом, вам не нужно перезаписывать все данные пользователя.

Вы должны попробовать это:

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

ИЛИ ЖЕ

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

Использование сеанса столкнулось:

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

Использование global session ():
вы можете переопределить несколько элементов

$user= session('user_data');
$user['temporaryMobile'] = 'yourmobilenumber';
session(['user_data'=>$user]);
Другие вопросы по тегам