我正试图在laravel中使用分页。所以我尝试检索所有的交易并对其进行分页。我的流程如下所示,供参考视图 - > controller-> repository-> model。
myrepository:
public function getall(){
$this->transaction = Transaction::all();
return $this->transaction;
}
myController的:
public function getall(){
$transactions = $this->transaction->getall()->paginate(10);
//dd($this->transaction);
return view('transactions', ['transactions' => $transactions]);
}
在我的app.php服务提供商下我确定我有分页:Illuminate \ Pagination \ PaginationServiceProvider :: class,
但是没有别名。 所以在我的控制器中我做了:使用Illuminate \ Pagination;
答案 0 :(得分:5)
它不会以你的方式工作。因为all
方法会为您提供Collection
。 Paginate函数仅适用于Eloquent\Builder
或Eloquent Model
如果您需要在没有条件的情况下对所有记录进行分页,
\App\Transaction::paginate(10);
答案 1 :(得分:2)
这样做
//in repository
public function getAll($limit)
{
$this->transaction = Transaction::paginate($limit); //Use paginate here.
return $this->transaction;
}
//in controller
public function getall() {
$transactions = $this->transaction->getall(10);
}
答案 2 :(得分:1)
将以下功能添加到存储库
public function getModel() {
return new Transaction;
}
public function getAll() {
return $this->getModel()->all();
}
public function paginate($limit = 15) {
return $this->getModel()->paginate($limit);
}
public function getAll() {
$transaction = $this->transaction->paginate(10);
return view('transactions', ['transactions' => $transactions]);
}
答案 3 :(得分:0)
如果您想使用orderBy()
和paginate()
使用了类似的东西
$transactions = Transaction::all();
$transactions = Transaction::orderBy('name')->paginate(10);
return view('index', compact('transactions'));