2017-12-09 14 views
1

複雑なデータ出力用のプレゼンテーションおよびトランスフォームレイヤとしてFractal laravel packageを使用しています。フラクタルlaravelトランスフォーマの条件付き属性

私はこのようなUserTransformer書いた:今、私はこのようなコレクションとしてUserモデルの特定のフィールドを返すようにしたいいくつかの状況で

public function transform(User $user) 
    { 
     return [ 
      'user_id'   => (int)$user->user_id, 
      'name'    => $user->name, 
      'family'    => $user->family, 
      'username'   => $user->username, 
      'token'    => $user->token, 
      'mobile'    => $user->mobile, 
      'email'    => $user->email, 
      'sex'    => $user->sex, 
      'tel'    => $user->tel, 
      'province'   => $user->province, 
      'city'    => $user->city, 
      'picture'   => $user->picture, 
      'birthday'   => $user->birthday, 
      'wedding_date'  => $user->wedding_date, 
      'wife_birthday'  => $user->wife_birthday, 
      'desc'    => $user->desc, 
      'active'    => (bool) $user->active, 
      'supervisor'   => $user->supervisor, 
      'two_factor_enabled' => (bool) $user->two_factor_enabled, 
      'address'   => $user->address, 
      'created_at'   => $user->created_at, 
     ]; 
    } 

public function index() 
    { 
     return $this->collection(User::get(['user_id','name','family','username','created_at']), new UserTransformer()); 
    } 

しかし、この場合の結果ですがこのように:

"result": [ 
     { 
      "user_id": 1, 
      "name": "ahmad", 
      "family": "badpey", 
      "username": "09139616246", 
      "token": null, 
      "mobile": null, 
      "email": null, 
      "sex": null, 
      "tel": null, 
      "province": null, 
      "city": null, 
      "picture": null, 
      "birthday": null, 
      "wedding_date": null, 
      "wife_birthday": null, 
      "desc": null, 
      "active": false, 
      "supervisor": null, 
      "two_factor_enabled": false, 
      "address": null, 
      "created_at": { 
       "date": "2017-11-15 10:01:24.000000", 
       "timezone_type": 3, 
       "timezone": "Asia/Tehran" 
      } 
     } 
] 

選択に含まれていないUserモデルは、null値を返します。しかし、私は唯一のフィールドを返す必要があります。どうやってやるの ? 、私はLaravelを使用していない注意点としては、この

public function transform(User $user) 
    { 
     return array_filter([ 
      'user_id'   => (int)$user->user_id, 
      'name'    => $user->name, 
      'family'    => $user->family, 
      'username'   => $user->username, 
      'token'    => $user->token, 
      'mobile'    => $user->mobile, 
      'email'    => $user->email, 
      'sex'    => $user->sex, 
      'tel'    => $user->tel, 
      'province'   => $user->province, 
      'city'    => $user->city, 
      'picture'   => $user->picture, 
      'birthday'   => $user->birthday, 
      'wedding_date'  => $user->wedding_date, 
      'wife_birthday'  => $user->wife_birthday, 
      'desc'    => $user->desc, 
      'active'    => (bool) $user->active, 
      'supervisor'   => $user->supervisor, 
      'two_factor_enabled' => (bool) $user->two_factor_enabled, 
      'address'   => $user->address, 
      'created_at'   => $user->created_at, 
     ], function($item){ 
      return !is_null($item); 
     }); 
    } 

のようなものを、それらを削除する

答えて

1

使用アレイフィルタ、しかし、これはあなたが、アレイから一括で物事を削除する方法を一般的です。コールバック関数に渡す配列内の各値を超える

http://php.net/manual/en/function.array-filter.php

反復処理。コールバック関数がtrueを返すと、配列の現在の値が結果配列に返されます。配列キーは保持されます。

そして

http://php.net/manual/en/function.is-null.php

与えられた変数がNULLであるかどうかを検索します。 varがnullの場合はTRUEを返し、そうでない場合はFALSEを返します。

関連する問題