2017-02-22 11 views
0

Я потянул данные о связанных моделях в массив. Функция makeHidden хорошо работает на модели, однако соответствующая модель не затрагивается.Laravel Model with and 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 не влияет на отношения. Было бы хорошо, что это позволило вам указать атрибуты в отношениях как - makeHidden(['relation.field']).

Альтернативы вы можете попробовать это:

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

Не идеально, но это работает!

В этом примере используется select, чтобы выбрать только нужные вам поля. Не забудьте включить первичный ключ, используемый для получения отношения.