所以我有两个输入字段,当我点击它时,它会给我日历。我有两个领域。一个来自。而另一个。我有一个标有“搜索”的按钮。
所以我在想,如何在laravel中编写代码以获取这两个日期,并在这两个日期之间给出结果?我可以在我的数据库上使用“created_at”时间戳来执行此操作吗?我的意思是日期选择器
另外,如何使用AJAX将数据加载到同一页面?我有一个查询来从模型中获取所有数据并显示到索引函数。它也是分页的。那么我怎么能使用ajax。
由于
更新
这是我到目前为止所拥有的。这是我的html表单:
{!! Form::open(['method'=>'POST', 'action'=>'AdminViewController@search']) !!}
<input type="text" id="from" name="from">
<input type="text" id="to" name="to">
<input type="submit" id="search" value="Search">
{!! Form::close() !!}
这是我的表(注意:当前的foreach循环取自我的控制器以放置一些样本数据):
<table class="table">
<thead>
<tr>
<th>Room Number</th>
<th>Cleaned By</th>
<th>Total Time</th>
<th>Supervised</th>
<th>Issues</th>
<th>Cleaned</th>
<th>View</th>
</tr>
</thead>
<tbody>
@foreach($clean as $cleans)
<tr>
<td>{{$cleans->roomnumber}}</td>
<td>{{$cleans->users->name}}</td>
<td>{{$cleans->roomnumber}}</td>
@if($cleans->verified == 1)<td class="verified">Yes</td>@else()<td class="notverified">No</td>@endif
@if($cleans->img1 || $cleans->img1 || $cleans->img1 == !null)<td class="verified">Yes</td>@else()<td class="notverified">No Issues</td>@endif
<td>{{$cleans->created_at->diffForHumans()}}</td>
<td><a href="{{route('starlord.show', $cleans->id)}}"><i class="lnr lnr-eye"></i></a></td>
</tr>
@endforeach
</tbody>
</table>
这是我的路线(分组为管理员):
Route::get('/search', 'AdminViewController@search');
Route::post('/search', 'AdminViewController@search');
我的处理搜索的控制器:
public function search(Request $request){
$data = $request->only(['from', 'to']);
$data['to'] .= ' 23:59:59';
$output = Clean::whereBetween('created_at', $data)->get();
return json_encode($output);
}
最后这是AJAX。
$(document).ready(function(){
$("#search").click(function(event){
event.preventDefault();
$.get("/admin/search", function(data, status){
console.log("Data: " + data + "\nStatus: " + status);
});
});
});
当我简单地将它返回到没有ajax的视图时,搜索结果非常完美。没有问题。但问题是,当我从我的ajax控制日志时,有500个内部错误。这是错误:
GET http://test.com/admin/search 500 (Internal Server Error)
send @ jquery.min.js:4
ajax @ jquery.min.js:4
n.(anonymous function) @ jquery.min.js:4
(anonymous) @ view:233
dispatch @ jquery.min.js:3
r.handle @ jquery.min.js:3
(anonymous) @ view:233
就是这一行:
$.get("/admin/search", function(data, status){
为什么我没有收到回复?如果我从我的按钮中移除event.preventDefault();
,它会转到/admin/search
(显然)。我对ajax没有太多经验,但我正在努力。
非常感谢。
答案 0 :(得分:0)
以下是在两个日期之间获取数据的方法 例如:
$start_of_year = Carbon::createFromDate($application->created_at)->startOfYear();
$end_of_year = Carbon::createFromDate($application->created_at)->endOfYear();
//dd($year,$start_of_year,$end_of_year);
$new = Application::where('status','new')
->whereBetween('created_at',
[ $start_of_year,$end_of_year])
->get();
答案 1 :(得分:0)
对于想知道如何使用laravel从whereBetween
获取数据的任何人,我的问题已经更新。
以上是针对上述问题的固定且有效的Json(带注释)。
$(function() {
$('.form').submit(function(event) {
// get the form data in value key pair using jquery serialize
var data = $(this).serialize();
// get the url we are posting to from the forms action attribute
//var url = $(this).attr('/admin/search');
// process the form
$.ajax({
type: "POST", // define the type of HTTP verb we want to use (POST for our form)
url: "search", // the url where we want to POST
data: data, // the url where we want to POST, set in variable above
dataType: "json", // what type of data do we expect back from the server
encode : true,
success: function (data) {
console.log(data);
}
});
// using the done promise callback (success)
// search.done(function(data) {
//
//
// // log data to the console so we can see
// console.log(data);
//
// // here we will handle errors and validation messages
// });
// stop the form from submitting the normal way and refreshing the page
event.preventDefault();
});//submit function
});//doc ready end
希望这有助于解决您的问题:D