问题描述
我将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 (将#修改为@)