我用的是Laravel 5.7。和GuzzleHttp 6.0从端点获取API响应
我将查询数据从Blade表单传递到此函数。
public static function prhmulti($multisearch, $start ,$end)
{ $city = $multisearch['city'];
$client = new Client([
'base_uri' => 'https://avoindata.prh.fi/tr/',
'query' => [
'totalResults' => 'true',
'maxResults' => '1000',
'registeredOffice'=> $city,
'companyForm'=>'OY',
'companyRegistrationFrom'=>$start,
'companyRegistrationTo'=>$end,
],
'defaults'=>[
'timeout' => 2.0,
'cookies' => true,
'headers' => [
'content-type' => 'application/json',
'User-Agent' =>"GuzzleHttp/Laravel-App-5.7, Copyright MikroMike"
]]]);
$res = $client->request('GET','v1');
$ResData = json_decode($res->getBody()->getContents());dd ($ResData)提供来自API响应的所有数据。
但我无法将JSON返回到其他函数
return $this->multisave($ResData);
public static function multisave (data $ResData)这将解析JSON和
{
foreach ($data->results as $company) {
$name = $company->name;
$Addr = $company->addresses;
$businessId = $company->businessId;
$companyForm = $company->companyForm;
$registrationDate = $company->registrationDate;
foreach ($company->addresses as $Addr) {
$city = $Addr->city;
$postcode = $Addr->postCode;
$street = $Addr->street;
}
}将数据保存到Mysql。
$NewCompany = new Company();
$NewCompany = Company::updateOrCreate($array,[
[ 'vat_id', $businessId],
[ 'name', $name],
[ 'form',$companyForm],
[ 'street', $Addr],
[ 'postcode', $postcode],
[ 'city', $city],
[ 'regdate', $registrationDate],
]);
}如果Parse部件和Save部件在相同的函数内,代码工作正常(只保存一个公司),
但我需要把它们分开,因为以后更容易维护。
错误,我要返回$ResData
" Using $this when not in object context" 信息在JSON数组中。
还有前部只存一家公司?
foreach ($data->results as $company) {
$name = $company->name;
$Addr = $company->addresses;
$businessId = $company->businessId;
$companyForm = $company->companyForm;
$registrationDate = $company->registrationDate;
foreach ($company->addresses as $Addr) {
$city = $Addr->city;
$postcode = $Addr->postCode;
$street = $Addr->street;
}那么: 1)创建自己的解析JSON函数和其他将数据保存到DB的最佳方法是什么? 2)作为foreach循环只保存一个公司数据,修复它的最佳方法是什么?
谢谢MikroMike。
发布于 2019-05-14 06:01:14
解决了我自己的问题,把公司保存到db
https://stackoverflow.com/questions/56101459
复制相似问题