Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel - Method delete does not exist

Tags:

php

laravel

I'm getting the error:

BadMethodCallException in Macroable.php line 74: Method delete does not exist.

route:

Route::resource('posts', 'PostController');

my controller:

public function destroy($id)
{
    $user_id = Auth::user();
    $post= Post::where('id', $id)->where('user_id',$user_id)->get();
    $post->delete();

    return view('/home', [
        'posts' => $post
    ]);
}

view:

  <form action="{{ route('posts.destroy', '$post->id') }}" method="post">
  <input type="hidden" name="_method" value="DELETE" />
      {{ csrf_field() }}
       {{ method_field('DELETE') }}

   <input type="submit" class="btn btn-danger" value="delete" />
  </form>

I tried changing method="post" to delete: error is gone but nothing gets deleted..

like image 531
Mette Avatar asked May 10 '17 18:05

Mette


1 Answers

This is your code.

$user_id = Auth::user();
$post= Post::where('id', $id)->where('user_id',$user_id)->get();
$post->delete();

just add ->each() before delete like this,

$post->each->delete();

It work's for me.

like image 105
Akeel ahamed Avatar answered Oct 04 '22 12:10

Akeel ahamed