Laravel抛出:方法paginate不存在错误

时间:2017-02-22 04:44:36

标签: php laravel pagination laravel-eloquent

我正试图在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;

4 个答案:

答案 0 :(得分:5)

它不会以你的方式工作。因为all方法会为您提供Collection。 Paginate函数仅适用于Eloquent\BuilderEloquent 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'));