Laravel 5.2:delete()和forceDelete()

Gam*_*mer 1 php laravel eloquent laravel-5 laravel-5.2

在我的控制器中:

public function destroy($id)
{
    $task = Task::findOrFail($id);
    if($task->forceDeleting){
      $task->forceDelete();
    }
    else {
      $task->delete();
    }
      return back();
}
Run Code Online (Sandbox Code Playgroud)

在上面的方法中,该else部分正在工作但是if不起作用并且No query results for model [App\Task]URI节目中引发错误http://localhost/Final/public/todo/28

我从视图到softDeletes和使用相同的方法Permanent Deletes.

{{ Form::open(['method' => 'DELETE', 'route' => ['todo.destroy', $task->id]]) }}
{{ Form::button('<i aria-hidden="true"></i>', array('type' => 'submit', 'class' => 'fa fa fa-trash fa-3x complete-icon')) }}
{{ Form::close() }}
Run Code Online (Sandbox Code Playgroud)

Mar*_*łek 6

似乎id = 28没有任务.但可能还有另一种选择.此任务已被删除(使用软删除),因此您可能应该更改:

$task = Task::findOrFail($id);
Run Code Online (Sandbox Code Playgroud)

$task = Task::withTrashed()->findOrFail($id);
Run Code Online (Sandbox Code Playgroud)

编辑

如果您想要删除(完全)软删除的模型,您应该使用以下代码(您应该使用trashed()方法):

public function destroy($id)
{
    $task = Task::withTrashed()->findOrFail($id);
    if(!$task->trashed()){
      $task->delete();
    }
    else {
      $task->forceDelete();
    }
    return back();
}
Run Code Online (Sandbox Code Playgroud)