Select 使用 Carbon 和 DB 的高级 where 子句和时间戳

Select with advanced where clauses and timestamp using Carbon and DB

我有一个代码可以从 table 生成 SQL 查询。 我想要 select 个存在于日期和另一个字段中的真实值之间的项目。

DB 在建筑和 Carbon 外墙中的使用,遵循 laravel 5 中有关如何使用 Carbon 的建议。

但是我没有得到我returns所有行

的效果
private function runBids() {
      $dt = Carbon::parse(Config::get('constants.start_lot'));
      $start = $dt->toDateTimeString();  // 2006-05-08 08:34:59
      $end   = $dt->addDay()->startOfDay(); // 2006-05-09 00:00:00

      $lots = DB::table('lots')
               ->select('id')
               ->where('end',false)
               ->where('end_auction', '<=', $end)
               ->where('end_auction', '=>', $start)  // Not work. Return 0 results
     // if comment  ->where('end_auction', '=>', $start) result 39 results with date 
     // between dates 
     // (start it's date of first element of table order by end_auction) 
               ->get();
      $lots_id = array();
      foreach ($lots as $value){
         $lots_id[] = $value->id;
      }
      dd($lots_id);
}

除了 $start 参数上使用的运算符外,一切似乎都是正确的。你有

->where('end_auction', '=>', $start)

你应该

->where('end_auction', '>=', $start)

注意 =>>= 之间的区别。第一个抛出 MySQL 错误。您可以尝试将该代码包装在 try ... catch 块周围,并检查异常消息。

您还可以使用 记录执行的查询,以便在您未获得预期结果时检查执行的查询。