2016-04-09 13 views
1

Laravelを使ってAPIを開発していますが、関係1:N(1対多)で問題や質問があります。 creatorUserが私の関係である、このような属性を1つだけ表示することは可能でしょうか?Laravel:オブジェクト全体ではなくリレーションの属性を返す

{ 
     "id": "string", 
     "production": "string", 
     "title": "string", 
     "description": "string", 
     "resourceType": "string", 
     "collections": "string", 
     "creatorUser: "name" 
} 

creatorUserは私の関係であると私は、この

{ 
     "id": "string", 
     "production": "string", 
     "title": "string", 
     "description": "string", 
     "resourceType": "string", 
     "collections": "string", 
     "creatorUser: { 
     id: "string", 
     name: "string" 
     } 
} 

のように取得していますこの時点で私は、オブジェクトのようなcreatorUserからデータを取得したくない、名前だけと、このように示されたこと"creatorUser: "name"何か方法はありますか?

と私は(これは私のコントローラである)の助けを

return CTL_Resource::with(['creationCountry' => function ($query) { 
      $query->select('idCountry', 'name'); 
     }, 'creatorUser' => function ($query) { 
      $query->select('idUser', 'name'); 
     }, 'resourceType' => function ($query) { 
      $query->select(['idResourceType', 'name']); 
     }, 'tags' => function ($query) { 
      $query->select(['idTag' => 'name']); 
     }, 'quickTags' => function ($query) { 
      $query->select(['idQuickTag' => 'name']); 
     }, 'relatedTo' => function ($query) { 
      $query->select(['idRelatedTo' => 'name']); 
     }])->orderBy('createTime', 'DESC')->paginate($request->per_page); 

おかげで、このように私の情報を取得しています。 (彼らはUUIDがあるためのidのは、文字列、ハハハ、そのある理由は聞かないで):P

答えて

1

creatorUserによって呼び出されたモデルの内部.. "App\User" ..アレイとパスとして保護変数$hiddenセットを使用フィールド名(または属性名)のJSON戻りオブジェクトでそのモデルのIDを隠すために配列に...

ですから、例えば:

は私がfooという名前のモデルを持っているとはFooの内部で言いますモデル私は返されてこれを持っている:

{ 
    foo_order: 039, 
    foo_id: 12982, 
    foo_name: "Bar" 
} 

この例では、返されたjsonオブジェクトからfoo_idを削除または非表示にしたいと考えています。その後、私の"App\Foo"モデルの内側に、私は単純な追加をしたい:

namespace app; 

use whatever\goes\here; 

class FooModel extends Model 
{ 
    ... 
    ... 
    /* 
    * Hide the listed fields (Attributes) 
    * from the returned json object 
    */ 
    protected $hidden = array('foo_id'); 
} 

結果SHOULDなるあなたは、この特定のテーブル/モデルからの結果を「取得」する際には、次の詳細については

{ 
    foo_order: 039, 
    foo_name: "Bar" 
} 

https://laravel.com/docs/5.4/eloquent-mutators

:あなた返されたJSONの結果を修正するための、より深いレベルでの情報は、以下のドキュメントを確認してください
関連する問題