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