我正在使用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
答案 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]);