1

I'm trying to update a record in the database . I'm trying to update an already registered product, then I do the research and then create several objects to save , the problem that laravel returns an error mesage warning that I am trying to create an object with a null value , and I'm passing a value for he. Follows the code below

enter image description here

Model

enter image description here

I can't resolve this error, i need some help!!!

public function edit()
{
    $idProduct = Input::get('pid');

    $produto = ProductModel::where('id', $idProduct)->first();

    $nome = Input::get('eNome');
    $descricao = Input::get('eDescricao');
    $userID = Auth::user()->id;

    $produto->nome = $nome;
    $produto->descricao = $descricao;
    $produto->users_id = $userID;

    if (Input::hasFile('eFoto'))
    {
        $file = Input::file('eFoto');

        $fileNameUniq = uniqid();
        $destinationPath = public_path().'assets/admin/gallery/';


        $extension = pathinfo($file->getClientOriginalName(), PATHINFO_EXTENSION);

        $fileName = uniqid();
        if(move_uploaded_file($file, 'assets/admin/gallery/'.$fileName.'.'.$extension)){
            $produto->foto = $fileName.'.'.$extension;
        }

    }

    $produto->save();

    return Redirect::back()->with(['message' => 'Produto alterado com sucesso!']);
}

Routes:

Route::resource('/produto','admin\ProductController@index',['only' => 'index']);
Route::get('/produto/editar/ativar','admin\ProductController@activeProduct',['only' => 'activeProduct']);
Route::get('/produto/editar/desativar','admin\ProductController@disableProduct',['only' => 'disableProduct']);
Route::get('/produto/editar/{id}', array('as' => 'editProduct', 'uses' => 'Admin\ProductController@editProduct'));
Route::get('/produto/excluir','admin\ProductController@destroy',['only' => 'destroy']);
Route::any('/produto/add','admin\ProductController@store',['only' => 'store']);
Route::post('/produto/editar','admin\ProductController@edit',['only' => 'edit']);

View

<div class="modal">
              <div class="modal-dialog">
                <div class="modal-content">
                  <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title">Editar produto</h4>
                  </div>
                  <div class="modal-body">
                    <link href="http://fonts.googleapis.com/css?family=PT+Sans+Narrow:400,700" rel='stylesheet' />

                    <!-- The main CSS file -->
                    <link href="{{URL::asset('/')}}assets/admin/uploader/css/style.css" rel="stylesheet" />
                    <!--<form id="upload" method="post" action="app\controllers\admin\GalleryController@store" enctype="multipart/form-data">-->

                    {!! Form::open(['id' => 'product', 'method' => 'POST', 'enctype' => 'multipart/form-data', 'files' => true, 'action' => 'admin\ProductController@edit']) !!}
                        <div class="clearfix">
                            {!! Form::text('eNome', $eProduct->nome,['class' => 'form-control', 'required' => 'required']) !!}
                        </div>
                        <br>
                        <div class="row">
                            <div class="form-group foto col-xs-12">
                                <label>Foto atual: <a href="{{URL::asset('/')}}assets/admin/gallery/{{$eProduct->foto}}"><img src="{{URL::asset('/')}}assets/admin/gallery/{{$product->foto}}" width="100%" height="300px" class="user-image" alt="Imagem"/></a></label>
                                <br>
                                <label>Selecione uma nova foto:</label>
                                <input class="form-control" type="file" name="eFoto" value="" />
                            </div>
                        </div>
                        <br>
                        <div class="clearfix">
                            {!! Form::textarea('eDescricao', $eProduct->descricao,['class' => 'form-control', 'placeholder' => 'descricao', 'required' => 'required']) !!}
                        </div>
                        <br>

                   {!! Form::close() !!}
                  </div>
                  <div class="modal-footer">
                    <!--<button type="button" class="btn btn-default pull-left" data-dismiss="modal">Fechar</button>-->
                     <a class="btn btn-success pull-left"  href="{{URL::to('/yziadmin/produto')}}">Fechar</a>
                    {!! Form::hidden('pid', $eProduct->id) !!}
                    {!! Form::submit('Salvar', ['name'=>'btnsave', 'class'=>'btn btn-success pull-right', 'form'=>'product']) !!}
                    <!--<button type="button" class="btn btn-primary">Finalizar</button>-->
                  </div>
                </div><!-- /.modal-content -->
              </div><!-- /.modal-dialog -->
            </div><!-- /.modal -->
8
  • Hi, tanks for help, i'm up one image with the count of lines. Commented Oct 24, 2015 at 14:40
  • im not really familiar with coding style on laravel 5 though, try protected $fillable = array('nome'); on your productmodel Commented Oct 24, 2015 at 14:51
  • Hi every one, tanks for help, i'm up one image with the model. Commented Oct 24, 2015 at 14:57
  • 2
    $produto is null, looks like your query is failing Commented Oct 24, 2015 at 14:58
  • i'm try put the protected $fillable = array('nome'); on my ProductModel but does't work Commented Oct 24, 2015 at 14:58

2 Answers 2

2

use find instead of first.

$produto = ProductModel::find($idProduct);
$produto->name = $name;
$produto->save(); 

if you want to use update

 $produto = ProductModel::where('id', $idProduct)->update([your input content]);
Sign up to request clarification or add additional context in comments.

3 Comments

This works, but I'd like to know how to use the features of objects as $ product- > name passing the value to the object
Thanks for help, i'm update my code, but the problem is my hidden value, i'm put after the form close =/
ah yes. my mistake. i miss that.
1

put your

{!! Form::close() !!}

under your

{!! Form::hidden('pid', $eProduct->id) !!}

so it will be posted as well.

1 Comment

Perfect, it worked for me. Such a small oversight that cost me hours of development ...

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.