簡體   English   中英

Vue/Inertia.js 不更新數據庫中的值

[英]Vue/Inertia.js not updating value in database

我有以下表格:

<form @change="updatePipeline">
  <select v-model="pipeline.input_mode">
     <option value="text">Text</option>
     <option value="html">HTML</option>
     <option value="json">JSON</option>
  </select>
</form>

@change調用如下:

<script setup>
import {useForm} from "@inertiajs/inertia-vue3";
const props = defineProps({
    pipeline: {
        type: Object,
        required: true,
    },
});

const form = useForm({
    input_mode: props.pipeline.input_mode,
});

const updatePipeline = () => {
    form.put(route('pipelines.update', props.pipeline), {
        errorBag: 'updatePipeline',
        preserveScroll: true,
    });
};

該值未在數據庫中更新:

public function update(Request $request, Pipeline $pipeline)
{
    $pipeline->update(
        $request->validate([
            'input_mode' => 'required|string|min:3|max:255',
        ])
    );


    return redirect()
        ->route('pipelines.edit', ['pipeline' => $pipeline])
        ->with('success', 'Pipeline edited successfully.');
}

我究竟做錯了什么?

請注意對此答案的第一條評論。 它取決於版本

我不是慣性專家,但當你這樣做時

$pipeline->update(
        $request->validate([
            'input_mode' => 'required|string|min:3|max:255',
        ])
    );

它返回一個void ,您可以在這里看到https://laravel.com/api/5.5/Illuminate/Validation/Validator.html#method_validate

您正在尋找的是:

$request->validate(['input_mode' => 'required|string|min:3|max:255'])

$pipeline->update($request->validated());

validated()將返回一個經過驗證的項目數組。


編輯

您的模態Pipeline中的$fillables fillables 中有input_mode嗎? 如果沒有,那是你的問題

protected $fillables = ['input_mode'];

所以我在這里問這個問題后不久就發現了這一點。 數據庫沒有被持久化的原因是我指的是v-model屬性上的pipeline 相反,我應該參考form

<form @change="updatePipeline">
  <select v-model="form.input_mode">
     <option value="text">Text</option>
     <option value="html">HTML</option>
     <option value="json">JSON</option>
  </select>
</form>

所以,我沒有: v- v-model="pipeline.input_mode" ,而是: v-model="form.input_mode"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM