如何解决将Laravel Join查询转换为关系查询不会返回任何内容
我将laravel左联接查询转换为关系查询,为此我创建了所有必需的关系。但是它没有返回任何数据以供参考。我同时附上了两个查询,请提出我该怎么做才能使它正常工作。
旧查询
$q = DB::table('contracts')
->select('contracts.id','contracts.contract_start_time','contract_candidate_schedule.*','contracts.contract_client_id','contracts.contract_candidate_id','contracts.contract_vacancy_id','contracts.contract_start_date','contracts.contract_end_date','client.client_refno','client.client_name','vacancy.vacancy_jobTitle','candidate.candidate_mobilePhone','candidate.candidate_refNo',DB::raw('CONCAT(candidate_forename," ",candidate_surname) AS full_name'),DB::raw('CONCAT(contact_title,contact_forename,contact_surname) AS contact_full_name'),'contract_schedule.contract_date',DB::raw("MIN(contract_schedule.contract_date) AS contract_date"))
->leftjoin('client','client.id','=','contracts.contract_client_id')
->leftjoin('vacancy','vacancy.id','contracts.contract_vacancy_id')
->leftjoin('client_contact','client_contact.contact_clientid','contracts.contract_client_id')
->leftjoin('contract_schedule','contract_schedule.contract_id','contracts.id')
->leftjoin('contract_candidate_schedule',function($join){
$join->on('contract_schedule.id','contract_candidate_schedule.contract_schedule_id')
->where('contract_candidate_schedule.contract_schedule_date',DB::raw("MIN(contract_schedule.contract_date) AS contract_date"));
})
->leftjoin('candidate','candidate.id','contract_candidate_schedule.contract_schedule_candidate_id')
->where('contact_primarycontact','1');
if(isset($start_date) && $start_date != "" && isset($end_date) && $end_date != ""){
$sDate = DateTime::createFromFormat ("d/m/Y",$start_date);
$eDate = DateTime::createFromFormat ("d/m/Y",$end_date);
$q->whereBetween("contract_schedule.contract_date",array($sDate->format("Y-m-d"),$eDate->format("Y-m-d")));
}
$allContract = $q->groupby("contracts.id")->groupby("contract_candidate_schedule.id")->orderby("contract_schedule.contract_date","desc")->distinct()->paginate($tot);
新查询
$q= Contracts::with("client","vacancy",'clientContact');
if(($contract_date_from) && $contract_date_to != "" && ($contract_date_from) && $contract_date_to != ""){
$q->whereHas('contractScheduleSingle',function($f) use($contract_date_from,$contract_date_to){
$f->whereBetween("contract_date",array($contract_date_from,$contract_date_to));
});
}
else{
$q->with('contractScheduleSingle');
}
$q->whereHas('contractCandidateSchedule',function($info) {
$info->where('contract_candidate_schedule.contract_schedule_date',DB::raw("MIN(contract_schedule.contract_date)"))->with('candidate');
});
$result = $q->groupby("contracts.id")->groupby("contract_candidate_schedule.id")->orderby("contract_schedule.contract_date","desc")->distinct();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。