首页 > 解决方案 > Livewire Select2 与 take()

问题描述

我有一个 select2 组件,数据由数据库中包含数千个数据的表呈现。我能够在没有 livewire 的情况下以传统方式使用 ajax 配置此设置,但我想使用 livewire 来完成。

// 这是我的查询

$labels = Subject::select('id', 'label')
                        ->where('label', 'LIKE', '%'.$this->subjects.'%')
                        ->where('disableSubject','=', 0)
                        ->orderBy('id')
                        ->take(10)
                        ->get();

return view('livewire.select2-subjects',[
    'labels' => $labels,
]);

当组件被渲染和搜索时,只显示和搜索前 10 个结果,但我想搜索模型中的每个值并且每次只显示 10 个结果。

如果我注释掉 take(10),这种情况效果很好,但加载所有值需要时间,并且在 select2 下拉菜单中,值溢出,因为有超过 10k 条记录。

克服这个问题的最佳方法是什么?

标签: laravellaravel-livewire

解决方案


推荐阅读