Невозможно структурировать необработанный запрос в массив - PullRequest
1 голос
/ 14 мая 2019

У меня есть класс ресурсов и контроллер, где я делаю какой-то необработанный запрос, например.Я пытался использовать json_encode() и json_decode(), но продолжаю получать ошибки.

* Json_decode

Call to a member function first() on null

* Json_encode

Call to a member function first() on string

* просто вернуть $ test_table *

Call to undefined method stdClass::toArray()

TestsController.php

use App\Test;
use App\Http\Resources\Test as TestResource;

public function index()
{
    $test_table = DB::table('test_table')->select('id','test_col')->paginate(10);

    return  TestResource::collection($test_table);           
}

* Ресурс / Тест

class Test extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return parent::toArray($request);
    }
}

Ожидаемый вывод должен быть в формате JSON, который я могу обработать в приложении переднего планачто-то, использующее GuzzleHttp также должно быть в состоянии приятно разбивать на страницы.

1 Ответ

0 голосов
/ 14 мая 2019

Я думаю, что проблема связана с использованием разбиения на страницы после оператора select ... и учитывая тот факт, что вы используете ресурсы API, вы можете вернуть только нужные данные:

TestsController.php

use App\Test;
use App\Http\Resources\Test as TestResource;

// ...

    public function index()
    {
        $results = DB::table('test_table')->paginate(10);
                           /**       ^^^^^^^     */

        return  TestResource::collection($results);           
    }

Тогда в вашем ресурсе:

Ресурсы / test.php

class Test extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'id' => $this->id,  // <------
            'test_col' => $this->test_col,  // <------
        ];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...