2014-11-17 2 views
0

У меня есть запрос, который в настоящее время работает, однако он возвращает значительно больше данных, чем то, что мне нужно.Laravel - выберите только определенные столбцы в запросе 'hasMany'

Запрос

$alerts = Criteria::with('coordinate', 'alerts') 
     ->where('user_id', '=', Auth::id()) 
     ->get(); 

Например, если я хочу, чтобы выбрать только viewed столбец из alerts, это может быть достигнуто в этом запросе. Я использовал ::with, чтобы использовать функцию загрузки Laravel.

Большое спасибо.

ответ

1

Используйте замыкание, чтобы установить положение SELECT на вашем запросе:

$alerts = Criteria::with(['coordinate', 'alerts' => function($query) 
{ 
    $query->select('id', 'coordinate_id', 'viewed'); 
}]) 
->where('user_id', '=', Auth::id()) 
->get(); 

Не забудьте включить внешние ключи, так что Eloquent может правильно отобразить их для вас.

+0

К сожалению, мне представлена ​​ошибка - синтаксическая ошибка, неожиданная '=>' (T_DOUBLE_ARROW) '. – Ben

+2

@Ben - Упс. Отсутствует массив '[]' скобок. Добавили их. –

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