我有简单的模型Archive,它与MySQL表紧密相关。表有日期类型的字段日期,以及一些其他字段,如 id、标题、描述等。
如果通过日期以外的任何其他字段进行查询,我将获得所有所需的结果。到目前为止,模型仅返回空结果。
$criteria = array(['prog_i','=',9], ['date','>=','2017-11-01'], ['date','<=','2017-11-11']);
$offset = 0;
$query = Archive::where($criteria)
->orderBy('date', 'desc')
->skip($offset)
->take(40);
$results = $query->get();
var_dump($results);
/* object(Illuminate\Database\Eloquent\Collection)#350 (1) { ["items":protected]=> array(0) { } }
*/
但是,如果我在 phpMyAdmin 中使用 Laravel(来自调试器)构建的相同查询进行测试,它工作得很好并且正在返回结果。
select * from `archive` where (`prog_id` = '9' and `date` >= '2017-11-01' and `date` <= '2017-11-11') order by `date` desc limit 40 offset 0
Showing rows 0 - -1 (4 total, Query took 0.3204 seconds.)
可能出了什么问题?
最佳答案
你应该使用
$query = Archive::where('prog_id','=',9)
->whereBetween('date',['2017-11-01','2017-11-11'])
->orderBy('date', 'desc')
->skip($offset)
->take(40);
关于php - 在 where 子句中使用日期时,Laravel Eloquent 返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47475376/