2015-11-17 3 views
0

В Laravel 4.2 следующий запрос Eloquent удалит атрибуты, указанные в массиве. Я хочу выполнить аналогичную операцию, в которой я исключаю все атрибуты по умолчанию и включаю только те, которые находятся в массиве. Как я могу это сделать? Я подозреваю, что ответ может иметь какое-то отношение к определению настраиваемого массива $ appends в модели перед запуском запроса, но я не знаю, как это сделать.Исключить все, кроме указанных атрибутов в запросе - Eloquent Laravel 4.2

return MyModel::all()->each(function($row) { 
    $row->setHidden([ 
     'attribute_1', 
     'attribute_2' 
    ]); 
}); 

ответ

1

В модели

protected $excludedColumns = ['attr1', 'attr2']; 

    public function scopeExcludeColumns($query) { 
     return $query->select(array_diff(Schema::getColumnListing($this->table), $this->excludedColumns)); 
    } 

Использование:

$result = Model::excludedColumns()->all(); 

другой вариант заключается в установке $ спрятан собственности на модели по folowing

protected $hidden = array('attr1','attr2'); 

но исключит это поля из модели только при вызове $result->toArray; или $result->toJson();

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