我在搜索时遇到问题,我使用的是Laravel 5.5版本,情况如下:我有一些小组在一段时间内学习。在过滤页面上,管理员输入学习开始日期和结束日期,结果必须显示在给定时间段内学习或学习的所有组。以简单的方式比较不起作用,我想使用strtotime
函数,但是当我使用时:
->where(strtotime('edu_ending_date'),'=<',strtotime($edu_ending_date));
雄辩的说是没有这样的专栏名称......
if(!empty($input['daterange']))
{
$q->where(function($query)use($edu_starting_date,$edu_ending_date){
$query->where('edu_starting_date', '>=', "$edu_starting_date")
->where('edu_ending_date','=<',"$edu_ending_date");
});
}
答案 0 :(得分:0)
您可以使用
$q->whereBetween('edu_starting_date', [$edu_starting_date,$edu_ending_date])
答案 1 :(得分:0)
试试这个:
if(!empty($input['daterange']))
{
$q->where(function($query)use($edu_starting_date,$edu_ending_date){
$query->where('edu_starting_date', '>=', $edu_starting_date)
->where('edu_ending_date','=<',$edu_ending_date);
});
}
答案 2 :(得分:0)
日期在我的数据库中保存为字符串,没问题,这就是我想使用的原因 像这样的东西:
->where(strtotime('edu_ending_date'),'=<',strtotime($edu_ending_date));
答案 3 :(得分:0)
如果您需要在where子句中使用日期,我可能需要查看this article和this section of laravel docs,其中提到了其他where子句,其中包括whereDate
,{{1等等可能派上用场。在你的情况下,我建议你做两个whereDay
条件,作为:
whereDate
请注意,$query->whereDate('edu_starting_date', '>=', $edu_starting_date)
->whereDate('edu_ending_date', '=<', $edu_ending_date)
和$edu_starting_date
建议为$edu_ending_date
对象或PHP Carbon
函数的输出。如果你想根据Laravel文档使用字符串,它应该是可能的。希望这可以帮助你:)
答案 4 :(得分:0)
您可以使用DB :: raw
->where(DB::raw("strtotime('edu_ending_date')"),'=<',strtotime($edu_ending_date));
答案 5 :(得分:0)
谢谢你们,我发现了我的愚蠢错误,我将日期存储为字符串。