2015-07-20 71 views
3

有沒有一種優雅的方式來嵌套變形金剛的關係使用?我正在構建一個允許集合有條件地包含關係模型的REST接口。到目前爲止,我已經取得了一些成功,但在變壓器方面似乎有點失敗(我承認我對Laravel 5.1和Dingo有點新鮮)。我希望儘可能保持乾爽,所以如果將來關係或屬性發生變化,很容易改變。Laravel 5.1,Dingo - 嵌套變形金剛

例如,一個簡單的場景,其中用戶可以接收一個或多個消息(用戶的hasMany接收的消息)我可以做在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輸出在所有關係中保持一致。這可能嗎?謝謝!

+0

我應該提到,一切似乎都與奇異的物體和Laravel的標準屬性處理一起工作,但我正在使用轉換來分類集合,而且大多數情況下這些都是在這個過程中起作用的。 –

回答