Вот что я получаю сейчас с Fractal JsonApiSerializer of Fractal в Laravel:

{
        "type": "projects",
        "id": "18",
        "attributes": {
            "name": "pariatur",
            "parent_id": 1
        },
        "relationships": {
            "tasks": {
                "data": [
                    {
                        "type": null,
                        "id": "245"
                    }
                ]
            }
        }
    }
],
"included": [
    {
        "type": null,
        "id": "435",
        "attributes": {
            "name": "incidunt",
            "content": "Laboriosam occaecati qui voluptas suscipit. Magni numquam incidunt pariatur et at. Alias molestias perspiciatis quae sit.",
            "project_id": 12,
            "due_at": "1971-05-19"
        }
    },

Я знаю, что вы можете установить тип запрошенного ресурса следующим образом:

// Important, notice the Resource Key in the third parameter:
$resource = new Item($book, new JsonApiBookTransformer(), 'books');
$resource = new Collection($books, new JsonApiBookTransformer(), 'books');

Как я могу сделать это для включенных данных?

0
arxzur 21 Ноя 2018 в 19:26

1 ответ

Лучший ответ

Для людей, которые могут наткнуться на это. Мне не хватало того, что вам нужно установить ressourceKey в соответствующем преобразователе, где вы вызываете collection () для включения данных. Конечно, имеет смысл. В моем случае:

public function includeTasks(Project $project, ParamBag $paramBag)
{
    list($orderCol, $orderBy) = $paramBag->get('order') ?: ['created_at', 'desc'];

    $tasks = $project->tasks()->orderBy($orderCol, $orderBy)->get();

    return $this->collection($tasks, App::make(TaskTransformer::class), 'tasks');
}
0
Archie 22 Ноя 2018 в 08:16