Laravel 5.5的条件

时间:2018-06-16 08:30:23

标签: laravel laravel-5.5

我在搜索时遇到问题,我使用的是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");
     });
}

6 个答案:

答案 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 articlethis 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)

谢谢你们,我发现了我的愚蠢错误,我将日期存储为字符串。