Возникли проблемы при получении обновления в Laravel для работы - PullRequest
0 голосов
/ 03 мая 2018

Я сейчас работаю над проектом для университета. Я пытаюсь заставить функцию обновления работать. Я показал мой код ниже, любая помощь или направление будет принята с благодарностью.

У меня есть файл представления, показывающий, что в настоящее время находится в базе данных, я хочу отредактировать одно поле и обновить его до базы данных.

Заранее спасибо.

Контроллер

        <?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 голосов
/ 03 мая 2018

Включите пространство имен модели 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) }}"
0 голосов
/ 03 мая 2018

Вам нужен идентификатор (первичный ключ) для обновления данных

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

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

Я думаю, что если вы только хотите обновить уровень .. лучше использовать PATCH метод ..

Я думаю, что метод put используется, когда вы хотите обновить все данные таблицы, но метод patch используется для обновления не всех параметров вашей модели # CMIIW

0 голосов
/ 03 мая 2018
  1. Вам нужно скрытое поле ввода для сохранения идентификатора урока

<input name="id" type="hidden" value="{{ $lesson->id }}" />

  1. Существует много способов получить поля запроса в контроллере. Вы можете использовать $request->get('key')

А потом:

$lesson = Lesson::where('id', $request->get('id'))->firstOrFail();
$lesson->level = $request->get('level');
$lesson->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...