2016-12-16 13 views
0

私はサンプル2のテーブルを持っています。 1つは奨学生カラム生年月日奨学金テーブルです。私がここで作り出しているのは、年齢層を取得する基準です。条件Age_fromおよびAge_toを使用します。範囲内にある行/ sを取得/表示したい。戻り値は常に空であるため、このコードの間違いは何でしょうか。年齢範囲の条件に対応する行を表示

ご協力いただければ幸いです。あなたが試すことができ

データベース奨学生

scholar_id  Date_of_birth   Ship_level 
1    1991-12-19    Tertiary 
2    1990-01-19    Secondary 
3    2008-03-19    Primary 
4    1992-21-19    Tertiary 
5    1991-12-19    Tertiary 
6    2000-10-12    Secondary 
7    2001-12-23    Secondary 
8    2009-12-19    Primary 

データベース奨学

ship_id  Age_from Age_to Level 
1   10  16  Primary 

私のコード

public function ListOrgaScholar($ship_id) 
    { 
     $ship = Scholarship::find($ship_id); 

     $Agefrom = $ship->Age_from; 
     $Ageto = $ship->Age_to; 
     $Level = $ship->Level; 


     $scholars = (new Scholar)->newQuery()->select('*'); 
     if($Level) 
      $scholars->where('Level', '=', $Level); 

     $birthDates = $scholars->selectRaw('Date_of_birth');  
     $ag = []; 
     foreach($birthDates as $birthDatee){ 
      list($m,$d,$y)=explode('-',$birthDatee->Date_of_birth); 
      $age = Carbon::createFromDate($m,$d,$y)->age; 
      array_push($ag,$age); 
     } 
     $scholars = $scholars->get(); 
} 

答えて

0

//use Carbon\Carbon; - import Carbon in your class/controller 

public function ListOrgaScholar($ship_id) 
{ 
    $ship = Scholarship::find($ship_id); 


    $fromDate = Carbon::now()->subYears($ship->Age_from)->format('Y-m-d'); 
    $endDate = Carbon::now()->subYears($ship->Age_to)->format('Y-m-d'); 

    $scholars = Scholar::where('Ship_level', $ship->Level) 
       ->whereBetween('Date_of_birth', [$fromDate, $toDate]) 
       ->get();   

} 
関連する問題