2017-02-22 11 views
0

関連モデルのデータを配列に引き出します。 makeHidden関数はモデルでうまく機能しますが、関連するモデルは影響を受けません。LaravelモデルとmakeHidden

public function show($user) 
{ 
    $model = new User(); 
    $hidden = $model->allHiddenApiFieldsTemplate(); 
    $return = $model->with('accounts')->findOrFail($user)->makeHidden(['deleted_at', 'created_at','updated_at'])->toArray(); 
    return $return; 
} 

makeHiddenを使用して関連エンティティのフィールドを非表示にすることはできますか?それとも別の方法ですか?

+0

'makeHidden()'はリレーションシップでは機能しませんし、ドット表記を使用することもできません。関係から必要なフィールドを選択するか、配列にキャストする前に関係を調べます。 – Robert

答えて

0

私が知る限り、makeHiddenは関係に影響しません。関係の属性を-として指定することができたのは良いことでした。

$model->with(['accounts' => function($q) { 
    $q->select(['field1', 'field2']); 
}])->findOrFail($user)->makeHidden(['deleted_at', 'created_at','updated_at'])->toArray(); 

は理想的ではありませんが、それは動作します:あなたが試すことができます

代替です!

この例では、selectを使用して、リレーションから必要なフィールドのみを選択します。関係を取得するために使用される主キーを含めることを忘れないでください。