Laravel 发出请求并在发送到端点之前过滤控制器中的记录
我在数据库中有8000多条记录。我需要一个坚实的分页和过滤功能。为了实现这一点,我正在尝试在分页之前过滤记录并将其发送到端点 例如,在控制器中我请求Laravel 发出请求并在发送到端点之前过滤控制器中的记录,laravel,vue.js,vuejs2,Laravel,Vue.js,Vuejs2,我在数据库中有8000多条记录。我需要一个坚实的分页和过滤功能。为了实现这一点,我正在尝试在分页之前过滤记录并将其发送到端点 例如,在控制器中我请求关键字,并使用→when()如果有关键字,则使用该关键字过滤记录,然后→页码(20) 在控制器中 public function bridal(Request $request) { $keyword = $request->get("keyword"); $bridals = Place::with(["pl
关键字
,并使用→when()
如果有关键字,则使用该关键字过滤记录,然后→页码(20)
在控制器中
public function bridal(Request $request)
{
$keyword = $request->get("keyword");
$bridals = Place::with(["plans" => function($query)
{
$query->orderBy("plans.plan_price");
}
])
->whereHas("plans")
->groupBy("address")
->when($keyword, function($query, $keyword){
return $query->where("city", $keyword);
})
->paginate(20);
return $bridals;
}
路线
Route::match(["GET", "POST"], "bridal", "Api\BridalController@bridal");
我想在这里之前一切都很好。所以,让我们继续在前端
在vuex中:Store.js
state: {
bridals: [],
keyword: "",
},
mutations: {
setBridals(state, bridal){
state.bridals = bridal;
},
setKeywords(state, keys){
state.keyword = keys;
},
},
getters: {
getBridals(state){
return state.bridals;
},
},
actions: {
bridalApi({commit}, payload){
axios.get("api/bridal?page="+payload.page, {
keyword: payload.forms.keyword
})
.then(response => {
this.commit("setBridals", response.data);
})
.catch(e => {
console.log(e);
})
},
}
在home组件中,我向控制器发送过滤器参数
<form @submit.prevent="submit" method="post">
<search-bar />
<submit-btn />
</form>
mounted(){
this.$store.dispatch("bridalApi", {
page: this.currentPage,
forms: this.filterParams,
});
},
methods: {
submit(){
this.$store.dispatch("bridalApi", {
forms: this.filterParams,
});
},
},
computed: {
filterParams(){
let paramObj = {
keyword: this.$store.state.bridal.keyword,
}
return paramObj;
}
},
安装的(){
这是$store.dispatch(“bridalApi”{
page:this.currentPage,
形式:this.filterParams,
});
},
方法:{
提交(){
这是$store.dispatch(“bridalApi”{
形式:this.filterParams,
});
},
},
计算:{
过滤参数(){
设paramObj={
关键词:this.$store.state.bridal.keyword,
}
返回paramObj;
}
},
我不确定代码中有什么错误。我在哪里犯错误
p.S:顺便说一句,我设置并获取关键字
state.keyword
。。。很好用。我可以得到价值。我只是没有在这里添加输入代码 不要直接在计算块中访问状态,而是使用如下getter:this.$store.getters.bridals
。