无法在Laravel中更新工作

时间:2018-05-02 22:07:09

标签: php sql database laravel

我目前正在为大学开展一个项目。我试图让更新功能起作用。我已经在任何帮助或方向下面显示我的代码将不胜感激。

我的视图文件显示当前在数据库中的什么,我想编辑一个字段并将其更新回数据库。

提前致谢。

控制器

        <?php

    namespace App\Http\Controllers;

    use Illuminate\Http\Request;


    use Auth;


    class LessonsController extends Controller


    {

    public function update(Request $request) 

        {
            $lesson->level = $request->level;
            $lesson->update();

            return redirect('./lessons/');
        }

    }

查看文件

<html>

<head>
    <title></title>

</head>

<body>


    <form  class="form-horizontal" method="post" action="./{{ $lesson->id }}"> 
                    {{ method_field('put') }}
                    {{ csrf_field() }}
                    <input type="hidden" name="_method" value="PUT" />
                    <div class="form-group">
                        <label class="col-md-4 control-label">Username</label>
                        <div class="col-md-6">
                            <input type="text" name="level" class="form-control" value="{{ $lesson->level }}">
                        </div>
                    </div>


                    <div class="form-group">
                    <div class="col-md-6 col-md-offset-4">
                        <input type="submit" id="update-account" class="btn btn-primary" value="Update">
                    </div>
                    </div>

                </form>



</body>

3 个答案:

答案 0 :(得分:1)

  1. 您需要一个隐藏的输入字段来保留课程ID
  2. $request->get('key')

    1. 有很多方法可以在控制器中获取请求字段。您可以使用$lesson = Lesson::where('id', $request->get('id'))->firstOrFail(); $lesson->level = $request->get('level'); $lesson->save();
    2. 然后:

      <%   if (session.cart.totalItems) { %>
      </i> Cart <span class="badge"><%=  session.cart.totalItems  %></span></a>
      <% } %>`
      

答案 1 :(得分:1)

在文件顶部包含Lesson模型命名空间:

use App\Lesson;
// or App\Models\Lesson if you placed it under a different directory, for example.

您可以使用路由模型绑定简化查询以查找Lesson记录:

public function update(Request $request, Lesson $lesson) 
{
    $lesson->update([
        'level' => $request->level
    ]);

    return redirect()->route('lessons.show', compact('lesson'));
}

同时更新表单操作:

action="{{ route('lessons.update', $lesson->id) }}"

答案 2 :(得分:1)

您需要ID(主键)来更新数据

public function update(Request $request) 
    {
        $lesson = Lesson::find($id);
        $lesson->level = $request->level;
        $lesson->save();

        return redirect('./lessons/');
    }

我认为如果您只想更新级别..更好地使用PATCH方法..

我认为当您想要更新所有表数据时put方法正在使用,但patch方法用于更新模型的所有参数#CMIIW