Stack Overflow en español Asked by Mhizer on January 4, 2022
Estoy realizando un crud, y al llegar a la parte de la modificacion tengo el siguiente problema,
anteriormente ya habia realizado otros proyectos y en esta parte todo funcionaba bien, el problema sale porque las id´s de las tablas siempre eran simples, pero en este caso las id´s son distintas ejemplo
id_tipoproducto
A la hora de usar el metodo Find() se enfoca solo en la llave primaria (id) y este metodo no me funciona, asi que busque otro porque tambien lo uso para el metodo de eliminar y es el siguiente
$tipo_producto->tipo_producto::whereRaw('id_tipoproducto = id_tipoproducto', [$id_tipoproducto])->get();
el problema esta en que a la hora de dar submit al formulario me regresa el siguiente error:
"Class name must be a valid object or a string"
les muestro el codigo que estoy usando para modificar mi registro.
public function update(Request $request, tipo_producto $tipo_producto)
{
$id_tipoproducto = $request->id_tipoproducto;
$tipo_producto->tipo_producto::whereRaw('id_tipoproducto = id_tipoproducto', [$id_tipoproducto])->get();
//$tipo_producto= tipo_producto::find($id_tipoproduto);
$tipo_producto->tipo = $request ['tipo'];
$tipo_producto->update();
return redirect('tipop');
}
Anexo la estructura de mi modelo y de mi tabla
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class tipo_producto extends Model
{
protected $table="tipo_producto";
protected $fillable=['id_tipoproducto','tipo'];
}
y aqui el error que me salta si intento usar el metodo find()
Atendamos algunas observaciones:
No estás declarando la propiedad necesaria para decirle a Eloquent que tu llave primaria tiene un nombre distinto al esperado, entonces va así:
protected $primaryKey = 'id_tipoprpoducto';
Además de lo anterior, estas filtrando por la llave primaria por lo tanto se me hace innecesario (no es que esté mal) inyectes al modelo y un objeto (pues al hacer esto considero que sería mas útil por ejemplo si estuvieras trabajando con route model binding)
Entonces nuestra actualización pudiera quedar así:
public function update(Request $request, $id)
{
$elementoAModificar = tipo_producto::findOrFail($id);
$elementoAModificar->tipo = $request->tipo;
$elementoAModificar->save();
}
Lo que hacemos es:
tipo_producto
tipo
le asignamos el valor de tipo
que nos llega por el requestAnswered by BetaM on January 4, 2022
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP