2015-03-11 2 views
0

Я ищу ученика на основе некоторых входов, но он возвращает отдельные данные. Мне нужно, чтобы один ученик несколько дней посещал. Но он возвращает одно посещение.Как изменить hasone отношение к hasmany отношение ship в laravel

if(!empty($StudentAdmissionData['TripType'])) 
    { 
    $TripType=$StudentAdmissionData['TripType']; 
    $studentcheckarray['TripType']=$TripType; 
    } else { 
     $TripType=""; 
    } 
    if(!empty($StudentAdmissionData['schoolid'])) 
    { 
    $schoolid=$StudentAdmissionData['schoolid']; 
    $studentcheckarray['SchoolName']=$schoolid; 
    } else { 
    $schoolid=""; 
    } 

    if(!empty($StudentAdmissionData['Startdate'])) 
    { 
    $Startdate=$StudentAdmissionData['Startdate']; 
    } else { 
     $Startdate=""; 
    } 
    if(!empty($StudentAdmissionData['Enddate'])) 
    { 
    $Enddate=$StudentAdmissionData['Enddate']; 
    } else { 
    $Enddate=""; 
    } 
    if(!empty($StudentAdmissionData['Gender'])) 
    { 
    $Gender=$StudentAdmissionData['Gender']; 
    $studentcheckarray['gender']=$Gender; 
    } else { 
    $Gender=""; 
    } 
    if(!empty($StudentAdmissionData['Age'])) 
    { 
    $Age=$StudentAdmissionData['Age']; 
     $studentcheckarray['Age']=$Age; 
    } else { 
    $Age=""; 
    } 
    if(!empty($StudentAdmissionData['Grade'])) 
    { 
    $Grade=$StudentAdmissionData['Grade']; 
    $studentcheckarray['StudentCourse']=$Grade; 
    } else { 
    $Grade=""; 
    } 
     if(!empty($StudentAdmissionData['AttendenceStatus'])) 
    { 
    $status=$StudentAdmissionData['AttendenceStatus']; 

    } else { 
    $status=""; 
    } 
    if(!empty($StudentAdmissionData['studentname'])) 
    { 
    $sname=$StudentAdmissionData['studentname']; 
    $snamearray=explode("_",$sname); 
    $studentfirstname=$snamearray[0]; 
    $studentlastname=$snamearray[1]; 
    $studentcheckarray['PersonalFirstName']=$studentfirstname; 
    $studentcheckarray['PersonalLastName']=$studentlastname; 
    } else { 
    $sname=""; 
    $studentfirstname=""; 
     $studentlastname=""; 
    } 
     if(!empty($StudentAdmissionData['ParentName'])) 
    { 
    $pname=$StudentAdmissionData['ParentName']; 
    $studentcheckarray['GuardianFirstName']=$pname; 
    //$studentcheckarray['GuardianLastName']=$parentlastname; 
    } else { 
    $pname=""; 
    $parentfirstname=""; 
    $parentlastname=""; 
    } 
    if(!empty($StudentAdmissionData['AttendenceFrom'])) 
    { 
    $AttendenceFrom=$StudentAdmissionData['AttendenceFrom']; 

    } else { 
    $AttendenceFrom=""; 
    } 

Мой запрос

$StudentAdmissionDetailsbyid = StudentAdmissionModel::where($studentcheckarray) 
     ->whereHas('attendance',function($q) 
     { 
     if(!empty($StudentAdmissionData['Startdate']) && !empty($StudentAdmissionData['Enddate'])) 
     { 
      $q->whereBetween('date', array($Startdate,$Enddate)); 

      } 
      if(!empty($StudentAdmissionData['Startdate']) && empty($StudentAdmissionData['Enddate'])) 
     { 
      $q->where('date', '>', $Startdate); 
      } 
      if(empty($StudentAdmissionData['Startdate']) && !empty($StudentAdmissionData['Enddate'])) 
     { 
      $q->where('date', '<', $Enddate); 
      } 
      if(!empty($StudentAdmissionData['AttendenceFrom'])) 
     { 
     if($AttendenceFrom=="all") 
     { 
     if($status==0) 
     { 
     $q->where('toschool', '=', '0')->where('tohome', '=', '0');  
     } 
     if($status==1) 
     { 
     $q->where('toschool', '=', '1')->where('tohome', '=', '1');  
     } 
     } 
     if($AttendenceFrom=="fromschool") 
     { 
      if($status==0) 
     { 
     $q->where('toschool', '=', '0'); 
     } 
      if($status==1) 
     { 
     $q->where('toschool', '=', '1'); 
     } 
     } 
     if($AttendenceFrom=="fromhome") 
     { 
      if($status==1) 
     { 
     $q->where('tohome', '=', '1'); 
     } 
      if($status==0) 
     { 
     $q->where('tohome', '=', '0'); 
     } 
     } 

     } 

     }) 
     ->with('attendance') // Optional eager loading, but recommended 
     ->with('schollresult')->with('batchresult')->get()->toArray(); 

В модели

public function attendance() 
      { 
       // Assuming a one-to-one relationship 
       return $this->hasOne('StudentAttandenceModel','studentid'); 
      } 

Как изменить 12:59 отношение к одному ко многим отношений.

В студент ID таблицы = "2" означает

Attendence таблица

id studentid tohome toschool date 
1 2   1  1  2015-03-09 
2 2   1   1 2015-03-10 
3 2   1  1 2015-03-11 

Мой запрос является возвращает только первую строку, мне нужно все строки.

ответ

1

попробовать это:

в модели студента:

class Student extends Eloquent { 

    public function attendence() 
    { 
     return $this->hasMany('Attendence'); 
    } 

} 

и запрос так:

$attendences = Student::find(1)->attendence(); 

, если вы хотите, чтобы получить обратный запрос вы можете добавить к Attendence модели :

class Attendence extends Eloquent { 

    public function student() 
    { 
    return $this->belongsTo('Student'); 
    } 

} 
+0

Не должен ли я t be '$ attendences = Student :: find (1) -> post()'? Должно быть вызвано имя функции, а не модель. Чтобы упростить задачу, измените имя функции в классе 'Student' на' public function attendence() 'и вызовите' Student :: find (1) -> attendence() '. –

+0

Извините, я был в замешательстве, я уже исправил эту функцию. @TimLewis –

+0

Не стоит беспокоиться, что выглядит лучше :) Просто отсутствует '()' after' -> attendence' –