2 回答

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('');

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 關注
- 248 瀏覽
添加回答
舉報