有没有一种优雅的方式来嵌套关系使用的转换器?我希望构建一个REST接口,允许集合有条件地包含关系模型。到目前为止,我已经取得了一定的成功,但当谈到transformers时,它似乎有点崩溃(我承认我对Laravel 5.1和Dingo还是个新手)。我希望尽可能地保持这一点,这样如果将来关系或属性发生变化,也很容易改变。
例如,在一个简单的场景中,用户可能会收到一条或多条消息(user hasMany received messages),我可以在UserTransformer中执行以下操作:
<?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输出在所有关系中保持一致。这个是可能的吗?谢谢!
发布于 2015-07-22 01:28:09
我在这里找到了我的问题的答案:http://fractal.thephpleague.com/transformers/。
https://stackoverflow.com/questions/31507673
复制相似问题