Laravel 抛出:分页方法不存在错误
Laravel throwing: method paginate does not exist error
我正尝试在 laravel 中使用分页。所以我尝试检索所有交易并对其进行分页。我的流程是这样的,供您参考 view->controller->repository->model .
我的存储库:
public function getall(){
$this->transaction = Transaction::all();
return $this->transaction;
}
我的控制器:
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;
你的方式不行。因为 all
方法会给你 Collection
。分页功能仅适用于 Eloquent\Builder
或 Eloquent Model
如果需要对所有记录进行无条件分页,
\App\Transaction::paginate(10);
这样做
//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);
}
将以下函数添加到您的存储库
存储库
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]);
}
如果您想使用 orderBy()
和 paginate()
用过这样的东西
$transactions = Transaction::all();
$transactions = Transaction::orderBy('name')->paginate(10);
return view('index', compact('transactions'));
我正尝试在 laravel 中使用分页。所以我尝试检索所有交易并对其进行分页。我的流程是这样的,供您参考 view->controller->repository->model .
我的存储库:
public function getall(){
$this->transaction = Transaction::all();
return $this->transaction;
}
我的控制器:
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;
你的方式不行。因为 all
方法会给你 Collection
。分页功能仅适用于 Eloquent\Builder
或 Eloquent Model
如果需要对所有记录进行无条件分页,
\App\Transaction::paginate(10);
这样做
//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);
}
将以下函数添加到您的存储库
存储库
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]);
}
如果您想使用 orderBy()
和 paginate()
用过这样的东西
$transactions = Transaction::all();
$transactions = Transaction::orderBy('name')->paginate(10);
return view('index', compact('transactions'));