【发布时间】:2019-05-12 16:56:32
【问题描述】:
我正在使用 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 部分也只保存一个公司?
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 函数的最佳方法是什么 和其他将数据保存到数据库? 2)foreach循环只保存一个公司数据,什么是 最好的解决方法?
感谢 MikroMike。
【问题讨论】:
标签: json foreach laravel-5.7