laravel - Laravel 在 $from 和 $to 之间搜索日期不起作用
问题描述
在我的 Laravel-5.8 中,我有以下代码:
控制器:
if ($request->isMethod('post'))
{
$from = $request->input('from');
$to = $request->input('to');
if ($request->has('search'))
{
// select search
$searchReports = DB::table('hr_leave_requests AS lr')
->join('hr_leave_types AS lt', 'lr.leave_type_id', '=', 'lt.id')
->join('hr_employees AS em', 'lr.employee_id', '=', 'em.id')
->where('lr.leave_status', 4)
->where('lr.company_id', $userCompany)
->whereBetween('lr.commencement_date', [$from, $to])
->select('em.employee_code', DB::raw("CONCAT(em.first_name,' ',em.last_name) as full_name"), 'lr.commencement_date', 'lr.resumption_date', 'lr.no_of_days', 'lt.leave_type_name')
->get();
return view('report.leave_reports.hr_leave_taken_by_date_report', ['searchReports' => $searchReports]);
}
这是视图刀片:
<script type="text/javascript">
// $(document).ready(function() {
$(function() {
$('.fromDate').datepicker({
dateFormat: 'dd-mm-yy',
changeMonth: true,
changeYear: true,
showAnim: 'slideDown',
duration: 'fast',
yearRange: new Date().getFullYear() + ':' + new Date().getFullYear(),
});
});
</script>
<form action="{{route('reports.leaveReport')}}" method="POST" class="form-horizontal" enctype="multipart/form-data">
@csrf
<div class="container">
<div class="row">
<label for="from" class="col-form-label">From:</label>
<div class="col-md-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="far fa-calendar-alt"></i></span>
</div>
<input type="text" placeholder="dd/mm/yyyy" readonly autocomplete="off" name="from" class="form-control fromDate">
</div>
</div>
<label for="from" class="col-form-label">To:</label>
<div class="col-md-3">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text"><i class="far fa-calendar-alt"></i></span>
</div>
<input type="text" placeholder="dd/mm/yyyy" readonly autocomplete="off" name="to" class="form-control fromDate">
</div>
</div>
<div class="col-md-4">
<button type="submit" class="btn btn-primary btn-sm" name="search">Search</button>
</div>
</div>
</div>
</form>
路线:
Route::get('reports/leaveReport', 'LeaveReportsController@leaveReport')->name('reports.leaveReport');
Route::post('reports/leaveReport', 'LeaveReportsController@leaveReport')->name('reports.leave');
我正在使用JQuery UI datepicker
amdcommencement_date
和. 当我选择并提交时,我希望它根据所选日期进行过滤,但没有显示任何内容。$from
$to
$from
$to
如果我删除$from
and$to
并将其直接加载到视图刀片上,它可以正常工作。
我该如何解决这个问题?
谢谢
解决方案
确保您在输入和数据库之间使用相同的日期格式。日期格式必须与数据库表中定义的格式相似,否则您需要进行转换。
您可以像这样更改日期选择器格式:
$('.fromDate').datepicker({
dateFormat: 'yy-mm-dd',
// ..
}
或者,您可以使用 Carbon 库在控制器上转换日期格式。
$from = \Carbon::createFromFormat('d/m/Y', $request->input('from'))->format('Y-m-d');
推荐阅读
- node.js - 使用 Muller 上传后未找到图像
- c# - ASP.NET Core 3 记录到输出窗口
- android - 使用 kotlin 的 android 复选框 recyclerview
- javascript - 在页面上强制加载 JS 脚本
- rust - Rust 宏:捕获完全匹配的标记
- javascript - Heroku 无法与后端对话
- sql - 我如何在 Athena 中正确使用 sql 'case when'
- c - 为什么我得到这个程序的分段错误?
- node.js - mongoose 传入的参数必须是 12 字节的单个字符串或 24 个十六进制字符的字符串
- c++ - ADXL355 使用 SPI 和 arduino uno 将数据记录到 sd 卡