Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 分形嵌套变换,Dingo API,Laravel 5_Php_Laravel 5_Laravel 5.2_Dingo Api - Fatal编程技术网

Php 分形嵌套变换,Dingo API,Laravel 5

Php 分形嵌套变换,Dingo API,Laravel 5,php,laravel-5,laravel-5.2,dingo-api,Php,Laravel 5,Laravel 5.2,Dingo Api,我试图用以下代码转换票证的集合 public function transform(Ticket $ticket) { return [ 'id' => $ticket->id, 'title' => $ticket->title, 'status' => $this->transformerMessage($ticket->status), 'interactions' =>

我试图用以下代码转换票证的集合

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个项目的集合(这证明变量不是空的)

我做错了什么


感谢您的关注。

集合调用中的$this指的是从TransformerAbstract继承的transformer,TransformerAbstract从资源类型创建集合

尝试将->getData()添加到末尾,以从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()
    ];
}

试试这个。引用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);
                 }
              )
    ];
}

我试过了,从技术上讲,它是有效的,但是提取的数据没有通过
InteractionTransformer()
Ooops的
transform
方法。你说得对。错过了。我在上面添加了另一个答案。