使用碳和数据库选择高级where子句和时间戳

时间:2016-05-08 10:42:27

标签: laravel laravel-5 php-carbon

我有一个代码来从表中生成SQL查询。 我想选择日期之间存在的项目和另一个字段中的真值。

数据库用于建筑和碳幕墙,遵循如何在laravel 5中使用碳的建议。

但是我没有得到我返回所有行的效果

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);
}

1 个答案:

答案 0 :(得分:1)

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

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

你应该

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

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

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