如何为查询添加分页?
How to add pagination to the query?
之前我只是简单地做一个选择一些字段和一些条件的查询。这行代码给了我正确的结果。
public function index()
{
// Get links
$links = Link::select('id', 'url', 'short_url', 'counter', 'expired_on')
->orderBy('id', 'desc')
->where('delete_flg', 0)
->get();
// Return data
return view('dashboard')->with(
array(
'links' => json_decode($links),
'current_datetime' => Carbon::now()
)
);
}
现在我想对上面一行实现分页。
$links = Link::select('id', 'url', 'short_url', 'counter', 'expired_on')
->orderBy('id', 'desc')
->where('delete_flg', 0)
->get()->paginate(2);
当我最后尝试使用 paginate(2) 时,出现错误:
Method Illuminate\Database\Eloquent\Collection::paginate does not exist.
所以从其他一些教程我尝试不使用 ->get() 然后分页
然后我得到这样的错误。
count(): Parameter must be an array or an object that implements Countable
我对如何实现分页感到困惑。
有人可以帮我吗?
这是一个documented change in PHP 7.2。您需要将 Laravel 更新到 5.6+ 或将 PHP 降级到版本 7.1。
此外,你必须使用 paginate()
而不使用 ->get()
,你还应该看看 pagination documentation.
您可以简单地执行以下操作:
$links = Link::select('id', 'url', 'short_url', 'counter', 'expired_on')
->orderBy('id', 'desc')
->where('delete_flg', 0)
->paginate(2);
paginate 已经像 ->get()
这就是您 return 数据/集合到您视图的方式:
// return data
return view('dashboard', compact('links'));
压缩的替代方法:
return view('dashboard')->with([
'links' => $links
]);
然后在您看来,您可以对数据做任何您想做的事情:
@foreach($links as $link)
<p>{{ link }}</p>
@endforeach
之前我只是简单地做一个选择一些字段和一些条件的查询。这行代码给了我正确的结果。
public function index()
{
// Get links
$links = Link::select('id', 'url', 'short_url', 'counter', 'expired_on')
->orderBy('id', 'desc')
->where('delete_flg', 0)
->get();
// Return data
return view('dashboard')->with(
array(
'links' => json_decode($links),
'current_datetime' => Carbon::now()
)
);
}
现在我想对上面一行实现分页。
$links = Link::select('id', 'url', 'short_url', 'counter', 'expired_on')
->orderBy('id', 'desc')
->where('delete_flg', 0)
->get()->paginate(2);
当我最后尝试使用 paginate(2) 时,出现错误:
Method Illuminate\Database\Eloquent\Collection::paginate does not exist.
所以从其他一些教程我尝试不使用 ->get() 然后分页 然后我得到这样的错误。
count(): Parameter must be an array or an object that implements Countable
我对如何实现分页感到困惑。
有人可以帮我吗?
这是一个documented change in PHP 7.2。您需要将 Laravel 更新到 5.6+ 或将 PHP 降级到版本 7.1。
此外,你必须使用 paginate()
而不使用 ->get()
,你还应该看看 pagination documentation.
您可以简单地执行以下操作:
$links = Link::select('id', 'url', 'short_url', 'counter', 'expired_on')
->orderBy('id', 'desc')
->where('delete_flg', 0)
->paginate(2);
paginate 已经像 ->get()
这就是您 return 数据/集合到您视图的方式:
// return data
return view('dashboard', compact('links'));
压缩的替代方法:
return view('dashboard')->with([
'links' => $links
]);
然后在您看来,您可以对数据做任何您想做的事情:
@foreach($links as $link)
<p>{{ link }}</p>
@endforeach