【发布时间】:2021-03-15 15:11:01
【问题描述】:
我正在尝试使用 Laravel 从数据库中获取一些数据。提取部分工作正常,直到我想对数据使用分页。
在我的控制器 (RepairController) 中,我使用这个函数来获取所有内容(没有分页):
$pendingRepairs = Repair::get()->where('status.completed', 0);
这很好用。直到我添加分页功能。然后它给了我一个错误:
BadMethodCallException
Method Illuminate\Database\Eloquent\Collection::paginate does not exist.
互联网上的一些研究表明我需要删除 ::get() 部分。但是怎么做?既然我使用了 status.completed 外键值,那么使用 get 部分的替代方法是什么?
我的维修控制器:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Repair;
class RepairController extends Controller
{
public function index()
{
$allRepairs = Repair::get();
$pendingRepairs = Repair::get()->where('status.completed', 0)->paginate(2);
$doneRepairs = $allRepairs->where('status.completed', 1);
return view('repair.index', [
'pendingRepairs' => $pendingRepairs, 'doneRepairs' => $doneRepairs
]);
}
....
}
在 Repair.php 我有一个指向状态的链接:
public function status()
{
return $this->belongsTo(\App\Status::class);
}
有什么想法吗?谢谢:)
【问题讨论】:
标签: laravel laravel-pagination