Laravel - 方法删除不存在

Met*_*tte 5 php laravel

我收到了错误 method="post"

路线:

Route::resource('posts', 'PostController');
Run Code Online (Sandbox Code Playgroud)

我的控制器:

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
    ]);
}
Run Code Online (Sandbox Code Playgroud)

视图:

  <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>
Run Code Online (Sandbox Code Playgroud)

我尝试更改method ="post"删除:错误消失但没有任何内容被删除..

Ake*_*med 17

这是你的代码。

$user_id = Auth::user();
$post= Post::where('id', $id)->where('user_id',$user_id)->get();
$post->delete();
Run Code Online (Sandbox Code Playgroud)

->each()像这样在删除之前添加,

$post->each->delete();
Run Code Online (Sandbox Code Playgroud)

这个对我有用。


Mih*_*nde 12

删除get(),它将工作

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

If you want to delete first document you can use : 

$post= Post::where('id', $id)->where('user_id',$user_id)->first();
    $post->delete();
Run Code Online (Sandbox Code Playgroud)

但是,您始终需要检查$ post是否被查找为查询文档,或者是否为null,因此添加:

if($post){
$post->delete();
}
Run Code Online (Sandbox Code Playgroud)