2016-12-05 3 views
0

私はtemporarily hide model attributesの方法を読んでいます。 モデル関係属性を一時的に非表示にしたいとします。例えばLaravel 5でモデル関係の属性を一時的に非表示にする方法

{ 
    "slug": "google-chrome", 
    "name": "Google Chrome", 
    "description": { 
     "text": null, 
     "created_at": "2016-12-05 12:16:38", 
     "updated_at": "2016-12-05 12:16:38" 
} 

のみ、このクエリでdescription.created_atを隠すための構文は何ですか?私SoftwareControllerで 私が動作していないよう

public function show(Request $request, $slug) 
{ 
    $models = Software::query(); 

    $model = 
     $models 
     ->where('slug', $slug) 
     ->firstOrFail() 
     ->makeHidden([ 
      'description.created_at', 
     ]); 

    return $model; 
} 

この構文を持っていますか?出来ますか?

答えて

3

makeHidden()はドット表記法をサポートしていません。

あなたは、関連するモデルにmakeHiddenを呼び出す必要があります:あなたは、単一の結果を持っている場合にのみ動作することを

$model = $models 
     ->where('slug', $slug) 
     ->firstOrFail(); 

$model->description->makeHidden('created_at'); 

注意を。コレクションでこれを行う場合は、itensを繰り返し、必要なアイテムごとにmakeHiddenを実行する必要があります。

関連する問題