2 回答
![?](http://img1.sycdn.imooc.com/545868cd00013bbb02200220-100-100.jpg)
TA贡献1942条经验 获得超3个赞
目前,您调用each的是查询构建器实例,而不是查询的结果(这将是一个集合)。each()在查询生成器上用于分块结果,这将忽略您之前设置的任何限制。
首先,要获取您正在工作的代码,您可以将结果分配给一个变量,然后调用each()它。
$results = $sqls->orderBy('age', 'asc')->limit(50)->get();
$results->each(...);
但是,我实际上建议您使用map()和join()而不是each():
$results = $sqls->orderBy('id', 'asc')->limit(10)->get();
$return = $results->map(function ($item) {
return "<td> {$item->id} </td>";
})->join('');
仅供参考,Laravel 也有一个when()方法来省去你编写多个 if 语句的麻烦,所以你的整个查询看起来像:
$results = DB::table('foobar')
->select('id', 'name', 'age', 'zip_code')
->when($request->input('foo') === 'foo', function ($query) {
$query->where('age', '<', 31);
})
->when($request->input('bar') === 'bar', function ($query) {
$query->where('zip_code', '>', '12345');
})
->orderBy('age', 'asc')
->limit(50)
->get();
$return = $results->map(function ($item) {
return "<td> {$item->id} </td>";
})->join('');
![?](http://img1.sycdn.imooc.com/54584ef20001deba02200220-100-100.jpg)
TA贡献1865条经验 获得超7个赞
我想这会对你有所帮助
if($request->input('var')) {
$var = $request->var;
$cond1 = DB::table('table')->select('...')->where('foo','>',$var)-
>orderBy()->limit()->get();
// more if
}
- 2 回答
- 0 关注
- 176 浏览
添加回答
举报