数据库无法通过 Laravel 更新

Database couldn't update through Laravel

我想通过 Laravel 表单编辑我的数据库。编辑确实有效,但是当我想更新数据库时,它显示以下错误。

MethodNotAllowedHttpException in RouteCollection.php line 219:

这是我的控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Course;

class courseController extends Controller
{
    public function index()
    {
        $alldata=Course::all();
        return  view('course.index',compact('alldata'));
    }


    public function create()
    {
        return view('course.create');
    }


    public function store(Request $request)
    {
        $input = $request->all();
        Course::create($input);
        return redirect('course');
    }   


    public function show($id)
    {
        //
    }


    public function edit($id)
    {
        $course=Course::findOrFail($id);
        return view('course.edit',compact('course'));
    }


    public function update(Request $request, $id)
    {
        $input = $request->all();
        $data=Course::findOrFail($id);
        $data->update($input);
        return redirect('course');
    }


    public function destroy($id)
    {
        $data=Course::findOrFail($id);
        $data->delete($input);
        return redirect('course');
    }

}

这是我的编辑页面:

<html>
    <head> 
        <title> Update Course </title>
         <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
        <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    </head>
    <body>

        <div class="container" >
            <h3> Update course </h3>
        {!! Form::open(array('route' =>['course.update',$course->course_id],'class'=>'form-horizontal')) !!}
        {!! Form::token(); !!}
            <?php echo csrf_field(); ?>
            <div class="form-group">
                <label >Course Code</label>
                <input type="text" name="course_code" class="form-control"  value="{{$course->course_code}}">
            </div>
            <div class="form-group">
                <label >Course Title</label>
                <input type="text" name="course_title" class="form-control" value="{{$course->course_title}}">
            </div>
            <div class="form-group">
                <label>Course Credit</label>
                <input type="text" name="course_credit" class="form-control" value="{{$course->course_credit}}">
            </div>

            <button type="submit" class="btn btn-default">Update</button>
        {!! Form::close() !!}
        </div>
    </body>
</html>

这是路线:

<?php

Route::resource('course','courseController');



Route::group(['middleware' => ['web']], function () {

});

如果谁能解决problem.please求助

当您尝试编辑时,您需要根据此 link 添加方法类型。

Specifying different methods

You can use methods other than POST with your forms. Pass the 'method' you want in the array argument. Valid methods are 'get', 'put', 'patch', 'post', or 'delete'.

因此,在您的情况下,您需要将 'method' => 'patch' 添加到 Form::open..

因此您在 blade 中的最终代码将如下所示:

{!! Form::open([
    'method' => 'PATCH',
    'route' => ['course.update',$course->course_id],
    'class'=>'form-horizontal'
]) !!}

额外 我可以看到您正在使用 php 标签,例如 <?php echo csrf_field(); ?>,我假设您知道在 Laravel 中您可以使用 {{ csrf_field() }},这是相等的,但由于我没有深入的知识关于您的代码,所以它留给您。