2

我正在尝试使用以下代码转换一组

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": {}
    }
  ]
}

如果我尝试死亡并转储变量,我会得到一个包含 5 个项目的$ticket->interactions集合(这证明变量不为空)。

我在这里做错了什么?

感谢您的关注。

4

2 回答 2

0

你的集合调用中的 $this 是指从 TransformerAbstract 继承的转换器,它从资源类型创建一个集合。

尝试在末尾添加 ->getData() 以从 Dingo 资源集合中提取 REAL 集合。

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()
    ];
}
于 2016-01-23T03:01:20.020 回答
0

试试这个。引用 dingo 变换的回调:

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);
                 }
              )
    ];
}
于 2016-01-25T06:44:32.383 回答