2017-01-12 8 views
1

1.私のデータベースクエリで年齢の並べ替えorderby(最高から最低)を追加する方法について混乱しています。いくつかのコードを試しましたが、エラーを生成しますここのお手伝いが大歓迎です。orderbyをデータベースクエリで最高値から最低値に設定

public function ListOrgaScholar($ship_id){ 
     $ship = Scholarship::find($ship_id); 
     $ship_age_from = $ship->ship_age_from; 
     $ship_age_to = $ship->ship_age_to; 
     $scholars = (new Scholar)->newQuery()->select('*'); 
     $scholars->whereBetween(DB::raw('TIMESTAMPDIFF(YEAR,scholars.scholar_birthday,CURDATE())'),array($ship_age_from,$ship_age_to)); 
     $scholars = $scholars->get(); 

} 

それはclause.The $ship_gpa_from$ship_gpa_toはグレードの入力で、異なる2個であるので、2.Sameたちhere.Howは(最低から最高)ORDERBYを追加します。

public function ListOrgaScholar($ship_id){ 
      $ship = Scholarship::find($ship_id); 
      $ship_gpa_from = $ship->ship_gpa_from; 
      $ship_gpa_to = $ship->ship_gpa_to; 
      $scholars = (new Scholar)->newQuery()->select('*'); 

      if($ship_gpa_from) 
      $scholars->where('scholar_GPA', '>=', $ship_gpa_from); 
      if($ship_gpa_to) 
      $scholars->where('scholar_GPA', '<=', $ship_gpa_to); 

    $scholars = $scholars->get(); 
} 

答えて

1

結果をコレクションとして返してからコレクション関数を適用しようとしましたか?コードは次のようになります。

$scholarship = Scholarship::find($id); 

$scholars = Scholar::all(); 

$selectedScholars = $scholars->filter(function ($item, $key) { 
    $scholarAge = Carbon::now() - $item->scholar_birthday //this depends on the value of scholar_birthday; 
    return ($scholarAge >= $scholarship->ship_age_from && $scholarAge <= $scholarship->ship_age_from); 
})->sortBy("scholar_birthday"); 
関連する問題