我有一个代码来从表中生成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);
}
答案 0 :(得分:1)
除了在$start
参数上使用的运算符外,这一切似乎都是正确的。
->where('end_auction', '=>', $start)
你应该
->where('end_auction', '>=', $start)
注意=>
和>=
之间的区别。第一个抛出MySQL错误。您可以尝试将该代码包装在try ... catch
块周围,并检查异常消息。
您还可以使用one of this answers记录已执行的查询,以便在未获得预期结果时检查已执行的查询。