Я ищу ученика на основе некоторых входов, но он возвращает отдельные данные. Мне нужно, чтобы один ученик несколько дней посещал. Но он возвращает одно посещение.Как изменить 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
Мой запрос является возвращает только первую строку, мне нужно все строки.
Не должен ли я t be '$ attendences = Student :: find (1) -> post()'? Должно быть вызвано имя функции, а не модель. Чтобы упростить задачу, измените имя функции в классе 'Student' на' public function attendence() 'и вызовите' Student :: find (1) -> attendence() '. –
Извините, я был в замешательстве, я уже исправил эту функцию. @TimLewis –
Не стоит беспокоиться, что выглядит лучше :) Просто отсутствует '()' after' -> attendence' –