首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Api响应和Json laravel格式

问Api响应和Json laravel格式
EN

Stack Overflow用户
提问于 2019-05-12 16:56:32
回答 1查看 1.2K关注 0票数 0

我用的是Laravel 5.7。和GuzzleHttp 6.0从端点获取API响应

我将查询数据从Blade表单传递到此函数。

代码语言:javascript
复制
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返回到其他函数

代码语言:javascript
复制
return $this->multisave($ResData);



public static function multisave (data $ResData)

这将解析JSON和

代码语言:javascript
复制
{
 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。

代码语言:javascript
复制
$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

代码语言:javascript
复制
" Using $this when not in object context" 

信息在JSON数组中。

还有前部只存一家公司?

代码语言:javascript
复制
  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。

EN

回答 1

Stack Overflow用户

发布于 2019-05-14 06:01:14

解决了我自己的问题,把公司保存到db

  • 先得到数组内的总数
  • 使用for-循环进行计数
  • 以每个公司的前瞻循环提取信息为对象. $data = json_decode($res->getBody()->getContents());$total =$data-> $total;for ($i = 0;$i <$total;$i++){ $NewCompany =新公司( );foreach ($data->结果as $company) { $name = $company->name;$businessId = $company->businessId;$companyForm = $company->companyForm;$registrationDate = $company->registrationDate;$array = [];Arr:set($array,‘vat_id,$businessId);Arr:set($array,'name’s,$businessId);Arr::set($array,'form',$companyForm);Arr::set($array,'regdate',$registrationDate);$NewCompany =Company:updateOrCreate($array,[ 'vat_id',$businessId,'name',$name,'form',$companyForm,'regdate',$registrationDate,];}// END OF FOREACH }// END For循环}// END OF FUCNTION } // END OF类
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56101459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档