Estoy tratando de crear un blog pero sigo recibiendo este error.
La actualización del método BadMethodCallException no existe.
Estoy tratando de editar publicaciones y actualizar la base de datos.
public function update(Request $request, Post $post)
{
$posts = Post::Find($post);
$posts->update($request->all());
}
3 respuestas
Ya está aceptando el objeto Post a través del método
Más bien haciendo algo como esto
public function update(Request $request, Post $post)
{
$posts = Post::Find($post);
$posts->update($request->all());
}
Hazlo asi
public function update(Request $request, Post $post)
{
// you already have the Post object injected from the framework for you.
// you can use the instance freely.
$post->update($request->all());
}
De hecho, puede ser bueno verificar si el objeto $ post es nulo o no, pero laravel arrojará ModelNotFoundException si no tiene coincidencias en la base de datos.
Esto es algo llamado Route Model Binding que laravel 5.5 hace por usted si mantiene la configuración predeterminada, como al usar la clave principal 'id'. puedes leer más sobre esto en este https://laravel.com/docs/5.5/routing#route-model-binding
Hacer directamente:
public function update(Request $request, Post $post) {
$post->update($request->all());
}
$post
ya es una instancia del modelo Post
si la ruta se declaró como:
Route::get('posts/update/{post}', 'PsotsController@update');
Referencia de documento: enlace del modelo de ruta
$posts = Post::find($post->id);
find()
solo acepta primary id
Preguntas relacionadas
Nuevas preguntas
laravel
Laravel es un marco web PHP gratuito y de código abierto, creado por Taylor Otwell y destinado al desarrollo de aplicaciones web siguiendo el patrón arquitectónico modelo-vista-controlador (MVC) y basado en Symfony. El código fuente de Laravel está alojado en GitHub y tiene licencia bajo los términos de la Licencia MIT.