laravel - laravel 分页不适用于使用 withPagination
问题描述
分页不适用于分页。我究竟做错了什么?
过滤器没有重置,搜索没有更新,分页也不起作用。我注意到如果我删除use WithPagination
,分页开始恢复。这是我的代码:
class PostsIndex extends Component
{
use WithPagination;
public $status;
public $school;
public $filter;
public $search;
protected $queryString = [
'status',
'school',
'filter',
'search',
];
protected $listeners = ['queryStringUpdatedStatus'];
public function mount()
{
$this->status = request()->status ?? 'All';
}
public function updatingSchool()
{
$this->resetPage();
}
public function updatingFilter()
{
$this->resetPage();
}
public function updatingSearch()
{
$this->resetPage();
}
public function updatedFilter()
{
if ($this->filter === 'My Exp') {
if (! auth()->check()) {
return redirect()->route('login');
}
}
}
public function queryStringUpdatedStatus($newStatus)
{
$this->resetPage();
$this->status = $newStatus;
}
public function render()
{
$statuses = Status::all()->pluck('id', 'name');
$schools = School::all();
return view('livewire.posts-index', [
'posts' => Post::with('user', 'school', 'status')
->when($this->status && $this->status !== 'All', function ($query) use ($statuses) {
return $query->where('status_id', $statuses->get($this->status));
})->when($this->school && $this->school !== 'All Schools', function ($query) use ($schools) {
return $query->where('school_id', $schools->pluck('id', 'name')->get($this->school));
})->when($this->filter && $this->filter === 'Top Exp', function ($query) {
return $query->orderByDesc('votes_count');
})->when($this->filter && $this->filter === 'My Exp', function ($query) {
return $query->where('user_id', auth()->id());
})->when($this->filter && $this->filter === 'Spam Posts', function ($query) {
return $query->where('spam_reports', '>', 0)->orderByDesc('spam_reports');
})->when(strlen($this->search) >= 3, function ($query) {
return $query->where('body', 'like', '%'.$this->search.'%');
})
->addSelect(['voted_by_user' => Vote::select('id')
->where('user_id', auth()->id())
->whereColumn('post_id', 'posts.id')
])
->withCount('votes')
->withCount('comments')
->orderBy('id', 'desc')
->simplePaginate(10)
->withQueryString(),
'schools' => $schools,
]);
}
}
解决方案
推荐阅读
- mysql - 使用 codeigniter 从 db 获取数据并在视图中显示特定的数组索引
- python - How to train your own model in AWS Sagemaker?
- office365 - How to retrieve group content if you are not a member (you are Global Administrator)?
- angularjs - Replacements for isNullOrUndefined and isNumber utils methods after AngularJS v0.11.3 onwards
- python - Represent this Image django Model
- java - javax.persistence.PersistenceException:没有名为 aramis 的 EntityManager 的持久性提供程序
- sqlite - Linq2db for SQLite - Xamarin form
- kotlin - 如何使用 kotlin 协程并行运行两个作业但等待另一个作业完成
- python - 使用 Python IMAP 阅读 Gmail 邮件
- encode - 如何在 C# 中将 Texture2D 制作为 image.png