laravel得到的get数据后,如何再次筛选?
比如我先从数据库找到time小于等于当前时间戳的数据
$data = DB::table(‘test’)->where(‘time’,’<=’,time())->get();
得到很多数据
然后我想从这些数据里面找到某个时间戳的数据,如何有则返回,没有就返回空数组?
可以做到么,主要是我不想请求太多数据库,耗时间。
get
得到的结果是Collection
依然可以使用where
来实现过滤,只不过是在 PHP 层过滤的,而不是 数据库层过滤的!参考集合的可用方法之 where。
这种东西直接进行foreach其实也还好呀。处理数组不会太慢
foreach大法
评论中已经给到了方法
foreach
或者where
继续查询,但是我有点不理解的是主要是我不想请求太多数据库,耗时间
根据经验来看 collection的性能并不高 可能你操作collection时, mysql早就查出来了 query构建的sql语句 mysql执行是很快的 除非存在N+1得情况先查小于的 再从这个集合里找匹配某个值的 那为什么不一开始就从数据库查某个值的。。
查询到的集合可以使用where查询条件再次进行查询,语法和数据库查询一样,并且不消耗数据库资源,集合本身的查询是在php里进行的。