сохранить метод в базе данных вызывает ошибку преобразования массива в строку в laravel - PullRequest
0 голосов
/ 15 октября 2019

когда я выполняю пользовательскую команду с

php artisan query:all

все хорошо, кроме ошибки, отображаемой в консоли, ошибка:

преобразование массива в строку

и данные хранятся в базе данных. Я не понял причину этой ошибки, и она скрыта при скрытии, сохраняя в методе базы данных код моего сервиса, причиной которого является проблема

<?php

namespace App\Services;

use Carbon\Carbon;
use GuzzleHttp\Client;
use App\Models\weatherStatus;
use Illuminate\Support\Collection;

class ApixuService
{
    public function query(string $apiKey, Collection $cities): Collection
    {
        $result = collect();
        $guzzleClient = new Client([ //create quzzle Client
            'base_uri' => 'http://api.weatherstack.com'
        ]);
        foreach ($cities as $city) {
            $response = $guzzleClient->get('current', [
                'query' => [
                    'access_key' => $apiKey,
                    'query' => $city->name,
                ]
            ]);
            $response = json_decode($response->getBody()->getContents(), true); //create json from $response
            $status = new weatherStatus(); //create weatherStatus object
            //adding prameters
            $status->city()->associate($city);
            $status->temp_celsius = $response['current']['temperature'];
            $status->status = $response['current']['weather_descriptions'];
            $status->last_update = Carbon::createFromTimestamp($response['location']['localtime_epoch']);
            $status->provider = 'weatherstack.com';
            //save prameters


            $status->save();

            $result->push($status);
        }
        return $result;
    }
}

1 Ответ

0 голосов
/ 15 октября 2019

Чтобы вы могли найти некоторую ясность в том, что вы пытаетесь сохранить, выполните следующее:

$response = json_decode($response->getBody()->getContents(), true);

dd($response);

dd() сбросит все данные из $response и создаст сценарий.

Одним из значений, которое вы пытаетесь сохранить, является массив. Поле, которое вы пытаетесь сохранить, принимает string, а не array.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...