Создание объекта по умолчанию из пустого значения при обновлении записи - PullRequest
0 голосов
/ 08 июля 2019

Я могу создать новую запись в моей БД, но при обновлении с использованием приведенного ниже кода я получаю сообщение об ошибке «Создание объекта по умолчанию из пустого значения»

public function update(Request $request, $id)
    {
          $gameSearch = Game::findOrFail($id);

          if($file = $request->file('image')){
            $name = $file->getClientOriginalName();
            if($file->move('images/games/', $name)){
              $games->image = 'images/games/' . $name;
              $games->title = $request->title;
              $games->price = $request->price;
              $games->category_id = $request->category_id;
              $games->promote = $request->promote;
              $games->sold = 0;
              $games->save();
              return redirect()->route('admin.games');
            };
          };
    }

Маршрут:

Route::resource('/admin/games', 'AdminGamesController', [
  'names'=>[
    'index'=>'admin.games.index',
    'create'=>'admin.games.create',
    'store'=>'admin.games.store',
    'edit'=>'admin.games.edit',
    'show'=>'admin.games.show',
    'destroy'=>'admin.games.destroy',
    ]]);

Форма:

  {!! Form::model($gameSearch, ['method' =>'PATCH', 'action'=> ['AdminGamesController@update', $gameSearch->id], 'files'=>true, 'enctype'=>'multipart/form-data']) !!}
    <div class="form-group {{$errors->has('title') ? 'has-error' : ''}}">
      {!! Form::label('title', 'Game Title:') !!}
      {!! Form::text('title', null, ['class'=>'form-control', 'rows' => 3])!!}
      @if($errors->has('title'))
      {{$errors->first('title')}}
      @endif
      </div>
    <div class="form-group {{$errors->has('image') ? 'has-error' : ''}}">
      {!! Form::label('image', 'Image:') !!}
      {!! Form::file('image', null, ['class'=>'form-control'])!!}
      @if($errors->has('image'))
      {{$errors->first('image')}}
      @endif
    </div>

Если я использую этот код, однако он работает, но не обрабатывает обновление ссылки на изображение вообще

  public function update(GamesRequest $request, $id)
    {
          $gameSearch = Game::findOrFail($id);
          $input = $request->all();
          if($file = $request->file('image')){
            $name = $file->getClientOriginalName();
            $file->move('images/games/', $name);
            }
          $gameSearch->update($input);
          return redirect('admin/games');

    }

1 Ответ

0 голосов
/ 08 июля 2019

$gameSearch Vs.$games.Вы загружаете свой объект из БД в $gameSearch, но затем пытаетесь заполнить и сохранить $games.Измените все ссылки с $games на $gameSearch.

public function update(Request $request, $id)
{
    $gameSearch = Game::findOrFail($id);

    if ($file = $request->file('image')) {
        $name = $file->getClientOriginalName();
        if ($file->move('images/games/', $name)) {
            $gameSearch->image = 'images/games/' . $name;
            $gameSearch->title = $request->title;
            $gameSearch->price = $request->price;
            $gameSearch->category_id = $request->category_id;
            $gameSearch->promote = $request->promote;
            $gameSearch->sold = 0;
            $gameSearch->save();

            return redirect()->route('admin.games');
        };
    };
}
...