Не удается обновить базу данных Laravel (Модель, Представление, Контроллер) - PullRequest
0 голосов
/ 05 апреля 2019

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

Мое представление:

<div class="form-group row">
<label class="col-xs-2 col-form-label">Expiration Date</label>
<div class="col-xs-10">
<input class="form-control" type="date" value="{{ $Document->expires_at }}" name="expires_at" placeholder="Expiration Date">
</div>
</div></form>

            <embed src="{{ asset('storage/'.$Document->url) }}" width="100%" height="100%" />

            <div class="row">
                <div class="col-xs-6">
                    <form action="{{ route('admin.provider.document.update', [$Document->provider->id, $Document->id]) }}" method="POST">
                        {{ csrf_field() }}
                        {{ method_field('PUT') }}
                        <button class="btn btn-block btn-primary" type="submit">Approve</button>
                    </form>
                </div></form>

Моя модель:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ProviderDocument extends Model
{
    protected $table = 'provider_documents';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'provider_id',
        'document_id',
        'url',
        'unique_id',
        'status',
        'expires_at',

    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [

    ];

    /**
     * The services that belong to the user.
     */
    public function provider()
    {
        return $this->belongsTo('App\Provider');
    }
    /**
     * The services that belong to the user.
     */
    public function document()
    {
        return $this->belongsTo('App\Document');
    }
}

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

public function update(Request $request, $provider, $id)
    {
        if(Setting::get('demo_mode', 0) == 1) {
            return back()->with('flash_error', 'Disabled for demo purposes! Please contact us at info@appoets.com');
        }

        try {

            $Document = ProviderDocument::where('provider_id', $provider)
                ->where('id', $id)
                ->firstOrFail();
            $Document->update(['status' => 'ACTIVE']);
            $Document->expires_at = $request['expires_at'];
            $Document->save();
            return redirect()->route('admin.provider.document.index', $provider)->with('flash_success', 'Provider document has been approved.');

        }
        catch (ModelNotFoundException $e) {
            return redirect()->route('admin.provider.document.index', $provider)->with('flash_error', 'Provider not found!');
        }
    }

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

Ответы [ 2 ]

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

Благодаря вводу @@ LimKeanPhang выше, ниже приведен конечный результат.Мне не нужно было менять модель или контроллер.Просто вид.Работал как шарм.

<form class="form-horizontal" action="{{ route('admin.provider.document.update', [$Document->provider->id, $Document->id]) }}" method="POST">{{csrf_field()}}
<input type="hidden" name="_method" value="PATCH">
    <div class="form-group row">
        <label class="col-xs-2 col-form-label">Expiration Date</label>
            <div class="col-xs-10">
                <input class="form-control" type="date" value="{{ $Document->expires_at }}" name="expires_at" placeholder="Expiration Date">
            </div>
    </div>

            <embed src="{{ asset('storage/'.$Document->url) }}" width="100%" height="100%" />

            <div class="row">
                <div class="col-xs-6">
                        <button class="btn btn-block btn-primary" type="submit">Approve</button>

                </div>
            </div>
</form>
0 голосов
/ 05 апреля 2019

Почему бы вам не получить документ по идентификатору только следующим образом? Пожалуйста, попробуйте следующий код. Это должно работать.

Функция обновления контроллера.

public function update(Request $request, $provider, $id)
{
    if (Setting::get('demo_mode', 0) == 1) {
        return back()->with('flash_error', 'Disabled for demo purposes! Please contact us at info@appoets.com');
    }

    try {

        $Document = ProviderDocument::find($id);
        $Document->status = 'ACTIVE';
        $Document->expires_at = $request['expires_at'];
        $Document->save();

        return redirect()->route('admin.provider.document.index', $provider)->with('flash_success',
            'Provider document has been approved.');

    } catch (ModelNotFoundException $e) {
        return redirect()->route('admin.provider.document.index', $provider)->with('flash_error',
            'Provider not found!');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...