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
0 Asked on January 24, 2021 by jorge-galibert
1 Asked on January 24, 2021 by joel-fernando
0 Asked on January 24, 2021 by ricardo-lpez
1 Asked on January 23, 2021 by valeria-lvarez
0 Asked on January 23, 2021 by esteban-baquero
1 Asked on January 23, 2021 by pancho-bolatti
1 Asked on January 22, 2021 by david-reyes
1 Asked on January 22, 2021 by juan-luis
0 Asked on January 22, 2021 by kenneth-steve-aguilar
0 Asked on January 21, 2021 by isbel-ordo
1 Asked on January 21, 2021 by qwdas123
0 Asked on January 21, 2021 by dany-villarroel
1 Asked on January 21, 2021 by jose-leonardo-quiones
0 Asked on January 21, 2021 by germanccho
0 Asked on January 20, 2021 by jodurpar
1 Asked on January 20, 2021 by carlos-aburto
0 Asked on January 20, 2021 by zilogz80
1 Asked on January 19, 2021 by cristian-prieto-beltran
Get help from others!
Recent Answers
Recent Questions
© 2023 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP, SolveDir