首页 > 解决方案 > Laravel API Eloquent Where 子句与 Vue 不工作

问题描述

我的问题是,为什么我的 where 子句不起作用?我为我的 vue (with vuex) 项目使用了 Laravel API。

这是控制器功能

    public function specific_client(Request $request) {
            $id = $request->id;
            return JsonResource::collection(
            Measurement::where('client_id', '=',$id)
            ->with(['clients', 'measurement_data'])->get());
    }

我也使用 vuetify,这就是我获取 client_id 的方式:

<v-select v-model="cnr" :items="clients" item-text="clientnumber" item-value="id" :hint="cnr" solo></v-select>

我的 store.js :

        fetchClientMeasurements({commit}, cnr) {
            axios.post("http://localhost:8000/api/clientnr", cnr)
                .then(response => {
                    console.log(response.data.data);
                    console.log(cnr);
                    commit("setMeasurements", response.data.data);
                });
         },

我的 API 路线:

Route::post('clientnr', [MeasurementController::class, 'specific_client']);

当我控制台日志“cnr”时,我得到了正确的 ID,但我没有得到任何数据。如果我在 where 子句中替换 $id,我会得到正确的信息。我觉得这是我在某个地方犯的一个愚蠢的错误,但这就是我来这里的目的。

标签: sqllaravelvue.jseloquentvuex

解决方案


在您的 axios 请求中,您需要标记id参数。

axios.post("http://localhost:8000/api/clientnr", cnr)

应该

axios.post("http://localhost:8000/api/clientnr", {id: cnr})


推荐阅读