Как сделать обновление строки таблицы MySQL из формы: Laravel 5.8 - PullRequest
4 голосов
/ 08 апреля 2019

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

Мой файл редактирования (формы)

@extends('layout')

@section('content')
    <h1 class = "title">Edit Item</h1>

    <form method="post" action="/listings/{{$listing->id}}">

        @method('patch')
        @csrf

        <div>
            <label class="label" for="name">Name of Item</label>
            <div class="control">
                <input required type="text" class="input" name="description" placeholder="Name of Item"  value="{{$listing->title}}" >
            </div>
        </div>

        <div>
            {!! Form::select('lstatus',$lstatus,null) !!}
        </div>

        <div class="field">
            <div class="control">
                <button type="submit" class="button is-link">Update</button>
            </div>
        </div>


    </form>

Мой контроллер:

    public function edit(listing $listing, lstatus $lstatus)
    {
        $listing = $listing::find($listing->id);
        $lstatus = lstatus::pluck('name','id');
        return view('listings.edit', compact('listing','lstatus'));
    }
    public function update(listing $listing, lstatus $lstatus){



    $listing = listing::find($listing->id);

    $listing->listing_status_id = request('lstatus');
    $listing->title=\request('description');

    return back();

    }

Когда я нажимаю кнопку отправки в форме, ничего не происходит. В базе данных ничего не меняется, и я не получаю ошибку.

Ожидаемый результат будет для значений для обновления.

1 Ответ

1 голос
/ 08 апреля 2019

В этом случае вы можете использовать метод update(), передавая все входные данные из запроса с методом all() в качестве параметра, при этом все атрибуты, которые вы отправите в запросе, будут сохранены автоматически:

$listing = $listing::find($listing->id);
$listing->update($listing->all());

весь метод:

Вы также можете извлечь все входные данные в виде массива, используя метод all:

метод обновления :

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

Если вы не используетеupdate() метод, вы должны использовать метод save() после внесения любых изменений:

 $listing->listing_status_id = request('lstatus');
 $listing->title=\request('description');
 $listing->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...