2015-04-27 2 views
1

У меня есть объективная модель, у которой много Action и у каждого Action есть один ActionYear. уже определенный в модели.Laravel Eloquent relationship orderby issue

Как использовать orderby для сортировки действий в объекте посредством определенного столбца action_year.

$query = Objective::with('actions.actionYear') 
      ->orderBy('action_year.created_at') 
      ->get(); 

это путем ошибки Undefined table: 7 ERROR: missing FROM-clause entry for table "action_year". Как это решить. Спасибо.

ответ

0

Если вы используете функцию с(), это только гарантирует, что именованное отношение будет загружено также во избежание дополнительной потребности в SQL-запросах позже. Othewise он не вносит никаких изменений по сравнению с Objective::all()

Один способа, как достичь отсортированных коллекций является использование sortBy() функции после загрузки данных, как этого

$query = $query->sortBy(function($objective){ 
    return $objective->actionYear->created_at; 
}); 
1

Вы можете заказать нетерпеливые загруженные модели с крышкой :

$query = Objective::with(['actions.actionYear' => function($q){ 
    $q->orderBy('action_year.created_at'); 
})->get(); 
+0

все еще проблема. –

+0

Но есть ли 'action_year' даже правильная таблица? – lukasgeiter

+0

да 'action_year'. У меня есть три слоя 'цель -> действие -> action_year' –