我有两个名为created_at和updated_at(timestamps)的字段,我想在where子句中搜索这些日期

时间:2017-09-08 10:49:05

标签: mysql laravel laravel-5 laravel-5.4 lumen-5.2

我想将输入日期作为参数,并在输入中给出的日期之间进行搜索。

这些是laravel提供的时间戳(),用于创建两个字段created_at和upated_at。我想在这些日期之间搜索,这些日期在created_at和updated_at中给出,但无法在这些日期之间找到数据。 以下是我创建的代码

` $startDate = $request->input('created_at');
  $endDate   = $request->input('updated_at');

->select()
->whereBetween('created_at','updated_at',[$startDate,$endDate])
->get();`

2 个答案:

答案 0 :(得分:1)

我认为whereBetween只接受2个参数。第一个是列名,第二个是包含要测试的值的数组。检查:https://laravel.com/docs/5.5/queries#where-clauses

你会想要这样的东西:

->whereBetween('created_at', [$startDate,$endDate])
->whereBetween('updated_at', [$startDate,$endDate])

答案 1 :(得分:1)

错误:

  

参数2传递给Illuminate \ Database \ Query \ Builder :: whereBetween()   必须是数组类型

是因为whereBetween()的第二个参数是一个数组,你在这里传递一个字符串'updated_at'。所以把它改为:

->whereBetween('created_at', [$startDate,$endDate])
->whereBetween('updated_at', [$startDate,$endDate])

Reference