Laravel 5.2:delete()和forceDelete()

时间:2016-05-06 19:37:01

标签: php laravel laravel-5 eloquent laravel-5.2

在我的控制器中:

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

在上述方法中,else部分正常工作,但if无法正常工作,并在No query results for model [App\Task]显示URI

时抛出错误http://localhost/Final/public/todo/28

我在视图中使用相同的方法softDeletesPermanent 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() }}

2 个答案:

答案 0 :(得分:5)

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

$task = Task::findOrFail($id);

$task = Task::withTrashed()->findOrFail($id);

修改

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

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

答案 1 :(得分:1)

wxITEM_DROPDOWN完成了魔法。

if($task->deleted_at == null)