Laravel 7 updateOrCreate 不起作用

时间:2021-06-21 20:48:56

标签: php laravel-7

我在使用 updateOrCreate 函数时遇到了一个奇怪的问题。如果我的记录是新的,则没有问题。但是如果记录存在,它就永远不会更新。比如我打了这个电话,好像更新了。

刀片

<form action="{{ route('updateOrCreate') }}" method="post">
    @csrf
    <div class="ms-4">
        <div class="form-check">
            <input class="form-check-input" type="radio" value="1" id="yes" name="question" {{ optional(auth()->user()->skillMaster)->question == 1 ? 'checked' : '' }}>
            <label class="form-check-label" for="yes">
                Yes
            </label>
        </div>
        <div class="form-check">
            <input class="form-check-input" type="radio" value="0" id="no" name="question" {{ optional(auth()->user()->skillMaster)->question == 0 ? 'checked' : '' }}>
            <label class="form-check-label" for="no">
                No
            </label>
        </div>
    </div>
    <div class="mt-4">
        <div class="col-md-4">
            <label for="skill_name">Skill name</label>
            <input type="text" class="form-control" id="skill_name" name="skill_name" value="{{ optional(auth()->user()->skillMaster)->skill_name }}">
        </div>
        <div class="col-md-4">
            <label for="year_obtaining_license">Year</label>
            <input type="text" class="form-control" id="year_obtaining_license" name="year_obtaining_license" value="{{ optional(auth()->user()->skillMaster)->year_obtaining_license }}">
        </div>
        <div class="col-md-4">
            <label for="educational_background">Educational</label>
            <input type="text" class="form-control" id="educational_background" name="educational_background" value="{{ optional(auth()->user()->skillMaster)->educational_background }}">
        </div>
    </div>
    <div class="mt-4">
        <button type="submit" class="btn btn-success">Save</button>
    </div>
</form>

web.php

Route::post('skillMaster/store', 'SkillMasterController@updateOrCreate')->name('updateOrCreate');

SkillMasterController.php

public function updateOrCreate(Request $request, SkillMaster $skillMaster)
{
    SkillMaster::updateOrCreate([
        'user_id' => $skillMaster->user_id
    ], [
        'user_id' => auth()->id(),
        'question' => $request->question,
        'skill_name' => $request->skill_name,
        'year_obtaining_license' => $request->year_obtaining_license,
        'educational_background' => $request->educational_background,
    ]);
    return redirect()->back();
}

0 个答案:

没有答案