Laravel - Ayuda con error con Update con select

 
Vista:
sin imagen de perfil
Val: 4
Ha disminuido su posición en 2 puestos en Laravel (en relación al último mes)
Gráfica de Laravel

Ayuda con error con Update con select

Publicado por José Maria (4 intervenciones) el 11/01/2019 12:37:13
Buenas amigos, llevo días con este maldito error y no consigo solucionarlo:

Tengo una tabla productos, con una tabla categoría que esta relacionada.
Clásica tabla de productos que lleva clave foranea Categoria_id.

Puestos en situación en el modelo de Productos tengo la relacion:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Productos extends Model {
 
    use sortable;
 
    // asignamos la tabla 
     protected $table = 'productos';
    //decimos que campos vamos a poder modicar  desde  el formulario
 
     protected $fillable = ['Codigo','Categoria_id', 'Descripcion', 'PVP', 'Coste'];
     protected $primaryKey = 'id';
 
 
     //Añadimos los campos para hacer el sort
        public $sortable = ['id','Codigo','Categoria_id', 'Descripcion', 'PVP', 'Coste'];
 
 
 
 
 
//Relación 
        public function categoria()
        {
            return $this->belongsTo('App\Categoria','Categoria_id');
        }


Las rutas:

1
2
3
4
5
6
7
8
9
10
11
12
13
Route::get('/productos', 'ProductosController@show')->name('productos');
Route::get('/productos/nuevo','ProductosController@create')->name('crear_producto');
Route::post('productos/crear','ProductosController@store');
 
Route::get('/probando','ProductosController@lista')->name('listaProductos');   /*-------------------------->Esta es de prueba*/
Route::get('precios/{id}','ProductosController@getprecios'); /*-------------------------->Esta es de prueba*/
 
Route::get('productos/{id}/editar','ProductosController@edit')->name('editar_producto');
Route::put('productos/{id}','ProductosController@update')->name('actualizar_producto');
Route::get('productos/{id}/eliminar',[
	'uses' =>'ProductosController@delete',
	'as' =>'eliminar_producto'
]);


El controlador de productos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public function edit ($id){
 
    $producto = Productos::findOrFail($id);
 
    $categorias  = Categoria::all();
    return view('Productos.Editarproducto', compact('producto','categorias'));
}
 
// ProductosRequest 
 
 public function update (Request $request,$id){
 
 
 
    $producto = Productos::find($id);
    // //almacenamos los datos
    $producto->Categoria_id = $request->Categoria_id;
 
    $producto->Codigo = $request->Codigo;
    $producto->Descripcion = $request->Descripcion;
    $producto->Categoria_id = $request->Categoria_id;
    $producto->PVP = $request->PVP;
    $producto->Coste = $request->Coste;
    $producto->save();
 
 
    return redirect::to('productos');
 
}




La vista editar, donde si me muestra el dato old, pero a la hora de actualizar me lanza el error por culpa del select.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{!! Form::open(['route'=>['actualizar_producto',$producto], 'method'=>'PUT']) !!}
 
    {{ csrf_field() }}  {{-- añadimos un token que solo conoce nuestra aplicación, de forma que nos protejamos ante posibles ataques de terceros --}}
 
    <div class="box-body">
        <div class="form-group">
            {{ Form::label('Codigo') }}
 
             <input id="Codigo" type="text" class="form-control" name="Codigo" value="{{ old('Codigo',$producto->Codigo) }}" required autofocus>
        </div>
 
        <div class="form-group">
            {{ Form::label('Descripción') }}
             <input id="Descripcion" type="text" class="form-control" name="Descripcion" value="{{ old('Descripcion',$producto->Descripcion) }}" required autofocus>
        </div>
 
 
        <div class="form-group">
            <select class="categoria" name="categoria" id="categoria" data-live-search="true">
                @foreach ($categorias as $categoria)
                        <option
                            value="{{ $categoria->id }}"
                            @if ($categoria->id === $producto->Categoria_id)
                                selected
                            @endif
                            >{{ $categoria->Descripcion }}</option>
                 @endforeach
            </select>
        </div>
 
 
        <div class="form-group">
            {{ Form::label('PVP') }}
            <div class="input-group">
                <div class="input-group-addon"></div>
                     <input id="PVP" type="number" class="form-control" step="any" name="PVP" value="{{ old('PVP',$producto->PVP) }}" required autofocus>
                </div>
 
            </div>
 
        <div class="form-group">
            {{ Form::label('Coste') }}
            <div class="input-group">
            <div class="input-group-addon"></div>
             <input id="Coste" type="number" class="form-control" step="any" name="Coste" value="{{ old('Coste',$producto->Coste) }}" required autofocus>
        </div>
 
 
        </div>
 
</div>
 
    <div class="box-footer">
        {{ Form::submit('Actualizar',['class'=>'btn btn-success']) }}
    </div>
 
{{ Form::close() }}


Este es el erro al actualizar:

Trying to get property of non-object (View: C:\wamp64\www\Gañafote\resources\views\Productos\ListadoProductos.blade.php)


al actualizar lo que hace es que me pone el valor como null, no me pone ningún dato.

Estoy ya desesperado y seguro que es un detallito que no soy capaz de ver.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder