我有一个庞大而又困难的SQL查询。这对我来说可以。我在控制器中有以下代码:
public function index(OpenRegDepDataReportInterface $openRegDepDataReport, Request $request): Renderable
{
$applications = $openRegDepDataReport->getReport($advertisers, $category);
return view('applications.index', compact('applications'));
}
因此,方法getReport
给我一个DB::select('<here is my big diffecult SQL>')
的结果,众所周知,它是一个数组。
但是正如您所看到的,我正在尝试将结果传递给视图。而且,当然,我想在视图中调用$applications->links()
,就像集合eloquent
一样。哪种方法更合适,更快捷?
答案 0 :(得分:1)
要在表上显示分页,必须先调用select然后再调用分页方法。
在控制器中:
$test = DB::table('users')->select('id')->paginate(10);
在视图中:
$test->links();
答案 1 :(得分:0)
简单答案,请使用DB_HOST=localhost
DB_USER=root
DB_PASS=s1mpl3
const db = require('db')
db.connect({
host: process.env.DB_HOST,
username: process.env.DB_USER,
password: process.env.DB_PASS
})
方法:
function x() {
let y = {
"Caspian Sea": 560,
"Tarn Hows": 53,
"Crater Lake": 324,
"Lake Tanganyika": 803,
"Lake Vostok": 546,
"Lake Baikal": 897,
};
}
Object.entries(x).forEach((entry) => {
console.log(entry);|
})
//for (let entry of Object.entries( y )) console.log(entry);
//let entries = Object.entries(x)
//console.log(entries);
但是,paginate()
仅适用于集合,并且由于您具有对象数组,因此需要首先使用forPage()
方法将其变成集合:
forPage方法返回一个新集合,该集合包含将在给定页码上显示的项目。该方法接受页码作为其第一个参数,接受每页显示的项目数作为其第二个参数:
$basicQuery = DB::select(DB::raw("<here is the big diffcult SQL query>"));
复杂的答案:自己构建一个分页程序实例:
paginate()
我建议使用$collection = collect($basicQuery);
$chunk = $collection->forPage(2, 3);
$chunk->all();
方法。
您可以了解有关Laravel's pagination的更多信息。
答案 2 :(得分:0)
因此根据文档,如果您的$perPage = 10;
$page = $request->input("page", 1);
$skip = $page * $perPage;
if($take < 1) { $take = 1; }
if($skip < 0) { $skip = 0; }
$basicQuery = DB::select(DB::raw("<here is the big diffcult SQL query>"));
$totalCount = $basicQuery->count();
$results = $basicQuery
->take($perPage)
->skip($skip)
->get();
$paginator = new \Illuminate\Pagination\LengthAwarePaginator($results, $totalCount, $take, $page);
return $paginator;
返回了查询生成器结果,则只需将paginate()
附加到该结果即可。
https://laravel.com/docs/master/pagination#paginating-query-builder-results
$applications