2016-12-16 3 views
0

샘플 2 개의 테이블이 있습니다. 하나는 학자생년월일장학금 테이블입니다. 내가 여기서 만드는 것은 연령대를 지정하는 기준입니다. 조건 Age_fromAge_to을 사용하십시오. 범위 내에서 발견 된 행을 가져 오거나 표시하려고합니다. 반환 값은 항상 비어 있기 때문에이 코드의 실수 일 수 있습니다.연령대 조건에 해당하는 행을 표시합니다.

도움이된다면 크게 도움이 될 것입니다.

데이터베이스 학술가

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();   

}