Laravel错误:从空值

时间:2015-10-24 14:13:25

标签: php laravel default

我试图更新数据库中的记录。我正在尝试更新已注册的产品,然后我进行研究,然后创建几个要保存的对象,laravel返回错误消息的警告我正在尝试创建一个空值的对象,我和#39; m为他传递一个值。请遵循以下代码

enter image description here

模型

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!']);
}

路线:

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']);

查看

<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 -->

2 个答案:

答案 0 :(得分:2)

使用find而不是first。

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

如果您想使用更新

 $produto = ProductModel::where('id', $idProduct)->update([your input content]);

答案 1 :(得分:1)

把你的

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

下的

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

所以它也会发布。