我使用以下查询来获取两个日期之间的记录。我在From Date,2017-05-30的To Date中输入了2017-05-01。我运行查询并获得空结果。但是,这个DB表有本月的许多记录。我在运行它之后删除了日期查询,它获得了很多记录。什么是我的问题..
$getdatewiseresults = Companyledger::whereDate('transaction_date', '<=' , $data['frmdate_submit'])
->whereDate('transaction_date', '>=', $data['todate_submit'])
->WhereIn('frm_ledger', $ledgerlist)
->where('company_id' ,$companyids)
->get();
答案 0 :(得分:0)
试试这个:
$getdatewiseresults = Companyledger::WhereIn('frm_ledger',$ledgerlist)->where('company_id',$companyids);
if(!empty($data['todate_submit'])) {
$getdatewiseresults = $getdatewiseresultsget->whereBetween('transaction_date', [$data['frmdate_submit'], $data['todate_submit']]);
} else {
$getdatewiseresults = $getdatewiseresultsget->whereDate('transaction_date', '=', $data['frmdate_submit']);
}
$getdatewiseresults = $getdatewiseresults->get();
答案 1 :(得分:0)
您的日期检查错误,您正在做与您想要的相反的事情。还可以使用碳来解析日期,这样您就不必担心日期格式。请检查以下代码。
$fromDate = $data['frmdate_submit'];
$toDate = $data['todate_submit'];
$getdatewiseresults = Companyledger::where('company_id', $companyids)
->whereIn('frm_ledger', $ledgerlist)
->where('transaction_date', '>=' , \Carbon\Carbon::parse($fromDate))
->where('transaction_date', '<=', \Carbon\Carbon::parse($toDate))
->get();
同样来自您要求仅在给出时应用日期的评论。只有在提供日期条件时才使用它来应用日期条件。
$getdatewiseresults = Companyledger::where('company_id', $companyids)
->whereIn('frm_ledger', $ledgerlist)
->when($fromDate, function ($query) use ($fromDate) {
return $query->where('transaction_date', '>=' , \Carbon\Carbon::parse($fromDate));
})
->when($toDate, function ($query) use ($toDate) {
return $query->where('transaction_date', '<=' , \Carbon\Carbon::parse($toDate));
})
->get();