Я использую 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],
]);
}
ЕСЛИ парсинг части и сохранение части внутри одного и того же кода функции работает нормально (сохранить только одну компанию),
но мне нужно разделить их, потому что позже их легче поддерживать.
Ошибка, которую я получаю, чтобы вернуть $ 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 и другой функции для сохранения данных в БД?2) Как в цикле foreach сохраняются только данные одной компании. Как лучше всего это исправить?
Спасибо MikroMike.