Вложенное преобразование с помощью Fractal, Dingo API, Laravel 5

Я пытаюсь преобразовать коллекцию Билеты со следующим кодом

public function transform(Ticket $ticket) {
return [
'id' => $ticket->id,
'title' => $ticket->title,
'status' => $this->transformerMessage($ticket->status),
'interactions' =>
$this->collection(
$ticket->interactions,
new InteractionTransformer(),
'interactions'
)
];
}

Но взаимодействия результат всегда пуст. Вот пример вывода, который я получаю:

{
"data": [
{
"id": 1,
"title": "Earum repudiandae corporis sapiente at odit itaque ratione.",
"status": "Open",
"interactions": {}
},
{
"id": 2,
"title": "Odit impedit vitae quo sit molestiae eius.",
"status": "Open",
"interactions": {}
},
{
"id": 3,
"title": "Fuga cum corrupti ut.",
"status": "Open",
"interactions": {}
}
]
}

если я попытаюсь умереть и бросить $ticket->interactions переменная, я получаю коллекцию из 5 элементов (которая доказывает, что переменная не пустая).

Что я здесь не так делаю?

Спасибо за внимание.

2

Решение

$ This в вашем вызове коллекции ссылается на преобразователь, который наследует от TransformerAbstract, который создает коллекцию из типа Resource.

Попробуйте добавить -> getData () в конец, чтобы извлечь коллекцию REAL из коллекции ресурсов Dingo.

public function transform(Ticket $ticket) {
return [
'id' => $ticket->id,
'title' => $ticket->title,
'status' => $this->transformerMessage($ticket->status),
'interactions' =>
$this->collection(
$ticket->interactions,
new InteractionTransformer(),
'interactions'
)->getData()
];
}
0

Другие решения

Попробуйте это вместо этого. Обратный вызов, ссылающийся на преобразование динго:

public function transform(Ticket $ticket) {
$output = $ticket->interactions;
$trans = new InteractionTransformer();
return [
'id' => $ticket->id,
'title' => $ticket->title,
'status' => $this->transformerMessage($ticket->status),
'interactions' =>
$ticket->interactions->transform(
function($i) use ($trans) {
return $trans->transform($i);
}
)
];
}
0

По вопросам рекламы [email protected]