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
1 Asked on January 19, 2021 by jonathan-alarcon
1 Asked on January 19, 2021 by david-l
1 Asked on January 19, 2021 by ivanrangel
2 Asked on January 18, 2021
3 Asked on January 18, 2021 by alfredo-arvelaez
3 Asked on January 18, 2021 by yasiel-hernndez
1 Asked on January 18, 2021 by luis-benito
1 Asked on January 17, 2021 by reynald0
0 Asked on January 17, 2021 by ezer2020
1 Asked on January 16, 2021 by m-angel-ambrose
0 Asked on January 16, 2021 by alex-gz
1 Asked on January 15, 2021
0 Asked on January 15, 2021 by sergio-durn-vega
1 Asked on January 15, 2021 by genarito
0 Asked on January 15, 2021 by david-torres-v
0 Asked on January 15, 2021 by dante-turcutto
Get help from others!
Recent Answers
Recent Questions
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP