在我之前只是做一个查询,它选择了一些字段和一些条件。这行代码为我提供了正确的结果。
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
我对如何实现分页感到困惑。
有人可以帮我吗?
答案 0 :(得分:5)
您可以简单地执行以下操作:
$links = Link::select('id', 'url', 'short_url', 'counter', 'expired_on')
->orderBy('id', 'desc')
->where('delete_flg', 0)
->paginate(2);
分页已经像->get()
这是您将数据/集合返回到视图的方式:
// return data
return view('dashboard', compact('links'));
替代紧凑型
return view('dashboard')->with([
'links' => $links
]);
然后在您看来,您可以对数据做任何想做的事情:
@foreach($links as $link)
<p>{{ link }}</p>
@endforeach
答案 1 :(得分:0)
这是documented change in PHP 7.2。您需要将Laravel更新到5.6+或将PHP降级到7.1版。
此外,您必须使用不带paginate()
的{{1}},还应该看看pagination documentation。