在Laravel项目中,我正在调用第3方api,并试图将json响应中的某些数据消耗到数据库中。
我的功能
public function addPlaid(Request $request) // adds a plaid user
{
$username = $request->input('bank_username');
$password = $request->input('bank_password');
$pin = $request->input('pin'); // set null
$type = $request->input('type');
$authUser = Plaid::addAuthUser($username, $password, $pin, $type);
return $authUser;
}
我的回复
{
"type": "device",
"mfa": {
"message": "Code sent to t...t@plaid.com"
},
"access_token": "test_chase"
}
在这里,我想将JSON响应中的“ access_token”值保存到users
列下的plaid_access_token
表中。我继续尝试更改功能。
public function addPlaid(Request $request) // adds a plaid user
{
$username = $request->input('bank_username');
$password = $request->input('bank_password');
$pin = $request->input('pin'); // set null
$type = $request->input('type');
$authUser = Plaid::addAuthUser($username, $password, $pin, $type);
$authUserData = json_decode($authUser['access_token']);
User::where('user_id', '=', 51)->update(['access_token' => $authUser->access_token]);
return $authUser;
}
但是现在我收到一个错误Trying to get property 'access_token' of non-object
我正在尝试找出是否使用错误的方法来保存此行代码User::where('user_id', '=', 51)->update(['plaid_access_token' => $authUser->access_token]);
注意:我正在使用用户51,所以我知道它的保存位置。
答案 0 :(得分:2)
正如我所见,$authUser
是一个JSON字符串,因此您需要先对其进行解码,然后再访问内容(使用json_decode()
)...
$authUser = Plaid::addAuthUser($username, $password, $pin, $type);
$authUserData = json_decode($authUser);
User::where('user_id', '=', 51)->update(['plaid_access_token' => $authUserData->access_token]);
如果数据不是数组,则需要使用数组符号而不是对象符号-$authUser['access_token']
...
$authUser = Plaid::addAuthUser($username, $password, $pin, $type);
User::where('user_id', '=', 51)->update(['plaid_access_token' => $authUser['access_token']]);
答案 1 :(得分:0)
尝试这种方式:
public function addPlaid(Request $request) // adds a plaid user
{
$username = $request->input('bank_username');
$password = $request->input('bank_password');
$pin = $request->input('pin'); // set null
$type = $request->input('type');
$authUser = Plaid::addAuthUser($username, $password, $pin, $type);
if($authUser){
User::where('user_id', '=', 51)->update(['plaid_access_token' => $authUser["access_token"]);
}
return $authUser;
}