为什么我的数据库不更新? (LARAVEL)

时间:2020-04-01 09:14:37

标签: laravel laravel-5

我的数据库没有更新

 dd(request()->has('validated'));

这是我的web.php的样子:

Route::patch('prof/theme/{id}/validated', 'Theme\ThemeController@valide')->name('prof.theme.validated');

这是我的ThemeController.php的样子:

public function valide(Theme $theme) {
        $theme->update([
            'validated' => request()->has('validated')
        ]);
       return back();

    }

这是我的show.blade.php的样子:

<form action="{{route('prof.theme.validated', $theme)}}" method="POST">
                        @csrf
                        @method('PATCH')
                             @if ($theme->validated)
                                <button type="submit" class="btn btn-danger text-center" style="width: 350px">
                                            INVALIDER LE THEME
                                </button>
                             @else
                                 <button type="submit" class="btn btn-success text-center" name="validated" id="validated" style="width: 350px">
                                                VALIDER LE THEME
                                 </button>
                             @endif
                         </form> 

此代码不会显示任何错误,但不会产生预期的作用。我的变量“ validated”是布尔值

2 个答案:

答案 0 :(得分:1)

谢谢Harshith VA !!!!多亏了您的想法,我才得以解决问题。我保留了您的观点并以这种方式使用了您的控制器想法

public function valide(Request $request, Theme $theme) {

        $theme->validated = $request->has('validated');
        $theme->save();
       return back();

    }

感谢您的帮助

答案 1 :(得分:0)

从第一眼看,我认为这是由于您已将name="validated"添加到<button>而不是添加为<input>

<form action="{{route('prof.theme.validated', $theme)}}" method="POST">
    @csrf
    @method('PATCH')
     @if ($theme->validated)
        <button type="submit" class="btn btn-danger text-center" style="width: 350px">
                    INVALIDER LE THEME
        </button>
     @else
         <input type="hidden" name="validated" value="true"> 
         <button type="submit" class="btn btn-success text-center" style="width: 350px">
                        VALIDER LE THEME
         </button>
     @endif
 </form>

在这里,我们使用validated输入添加一个隐藏的输入字段。这样做应该将validated键/值传递给控制器​​。

另一点。 dd()用于终止和转储数据,并且将停止执行任何正在运行的脚本。因此,一旦执行此操作,它将不会保存到数据库。

以上假设您并不是说dd()时它不会保存到数据库。

更新

还要注意,->has()检查输入是否存在。您应该使用request('validated')来获取其值。