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
方法。你说得对。错过了。我在上面添加了另一个答案。