软删除laravel:页面不存在或硬删除

时间:2018-02-16 09:45:19

标签: laravel eloquent soft-delete

我在Laravel的sofdelete有问题.. 在我的销毁方法中:

public function destroy($id)
{
    $sessions = DB::table('sessions')->where('id','=', $id);
    $sessions->delete();

    Session::flash('flash_message', 'it works !');
    return redirect()->route('sessions.index');
}

它没有进行软删除... 如果我使用eloquent更改请求:

    $sessions = Sessions::findOrFail($id);
    $sessions->delete(); 

我有:抱歉,找不到您要找的页面。

在我看来,我创建了表单

{!! Form::open([
        'method' => 'DELETE',
        'route' => ['sessions.destroy', $session->id]
]) !!}
{!! Form::submit('delete?', ['class' => 'btn btn-danger']) !!}
{!! Form::close() !!}

我不知道为什么它不起作用...... 谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

您说当您使用DB::table('sessions')时,它会删除记录,当您使用Sessions::时,它不会

我认为你不明白软删除是什么。

当您使用DB::table('sessions')时,该记录将被删除而不会被软删除。

当您使用Session::时,记录会保留在那里,但Eloquent会添加deleted_at时间戳。

来自the docs

  

模型被软删除后,实际上并未从数据库中删除它们。而是在模型上设置deleted_at属性并将其插入到数据库中。如果模型具有非空deleted_at值,则模型已被软删除。

答案 1 :(得分:0)

会话是laravel的外观所以它可能会为您创造问题。请参考以下链接 https://laravel.com/docs/5.6/session