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 для каждого элемента, который у вас есть.

Смежные вопросы