首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5.1,Dingo嵌套Transformers

Laravel 5.1,Dingo嵌套Transformers
EN

Stack Overflow用户
提问于 2015-07-20 09:22:06
回答 1查看 2.7K关注 0票数 3

有没有一种优雅的方式来嵌套关系使用的转换器?我希望构建一个REST接口,允许集合有条件地包含关系模型。到目前为止,我已经取得了一定的成功,但当谈到transformers时,它似乎有点崩溃(我承认我对Laravel 5.1和Dingo还是个新手)。我希望尽可能地保持这一点,这样如果将来关系或属性发生变化,也很容易改变。

例如,在一个简单的场景中,用户可能会收到一条或多条消息(user hasMany received messages),我可以在UserTransformer中执行以下操作:

代码语言:javascript
复制
<?php

namespace App\Transformers;

use App\Models\User;
use League\Fractal;

class UserTransformer extends Fractal\TransformerAbstract
{
    public function transform(User $user)
    {
        // Transform the basic model
        $returnUser = [
            'id'           => (int) $user->id,
            'email'        => $user->email,
            'role'         => $user->role,
            'status'       => $user->status,
            'links'        => [
                [
                    'rel' => 'self',
                    'uri' => '/users/'.$user->id
                ]
            ]
        ];

        // Transform relationships, but only if they exist and are requested
        if (isset($user->receivedMessages))
        {
            $returnUser['received_messages'] = [];

            foreach ($user->receivedMessages as $msg)
            {
                $returnUser['received_messages'][] = [
                    'id'      => $msg->id,
                    'read'    => $msg->read,
                    'content' => $msg->content
                ];
            }
        }
        return $returnUser;
    }
}

在这种情况下,我想嵌套/应用一个MesagesTransformer到相关的接收到的消息以进行输出格式化,以便所有REST输出在所有关系中保持一致。这个是可能的吗?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-07-22 01:28:09

我在这里找到了我的问题的答案:http://fractal.thephpleague.com/transformers/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31507673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档