为什么 SoftDelete 不会伪造已删除的行?

Why SoftDelete won't fake the deleted row?

有人能告诉我为什么使用 delete() 方法不会删除 table 中选定的行吗? SoftDelete 运行良好,但软删除的行仍然存在于 table 中。我希望我的 table 行会被隐藏或删除,但事实并非如此。任何提示或帮助将不胜感激! :) 我 SoftDelete 我的 table 喜欢这样。

控制器:

public function hideApprovalsDocument(Request $request, Document $id)
{
    //Getting the request in the View.
    $id = $request->get('softDelete');
    $hide = Document::findOrFail($id)->where('id', '=', $id);
    $hide->delete();

    return redirect()->back();

}

public function documentsSentForApproval()
{

    $pendingDocuments = DB::table('approvals_document')
        ->select('documents.title', 'documents.content', 'documents.id as documentId', 
            'categories.category_type',
            'users.username', 'approvals_document.created_at',
            'approvals_document.id', 'approvals_document.approver_id', 'approvals_document.requestedBy')
        ->join('documents', 'documents.id', '=', 'approvals_document.document_id')
        ->join('categories', 'categories.id', '=', 'documents.category_id')
        ->join('users', 'users.id', '=', 'approvals_document.approver_id')
        ->where('approver_id', '=', Auth::id())
        ->where('documents.deleted_at', '=', null)
        ->orWhere('requestedBy', '=', Auth::id())
        ->orderBy('approvals_document.id', '=', 'desc')
        ->paginate(10);

    return view ('document.pending')
        ->with('pendingDocuments', $pendingDocuments);

}

软删除不会删除该行。它将为 deleted_at 字段设置时间戳,eloquent 将忽略任何为字段 deleted_at 设置值的行。如果您实施了软删除并希望永久删除一行,请尝试使用 'forceDelete()'

$hide->forceDelete();

您无法通过 where 方法与 Laravel SQL 中的 NULL 值进行任何比较。您可以使用 whereRaw 方法:

public function documentsSentForApproval()
{

    $pendingDocuments = DB::table('approvals_document')
        ->select('documents.title', 'documents.content', 'documents.id as documentId', 
            'categories.category_type',
            'users.username', 'approvals_document.created_at',
            'approvals_document.id', 'approvals_document.approver_id', 'approvals_document.requestedBy')
        ->join('documents', function ($join) {
            $join->on('documents.id', '=', 'approvals_document.document_id')
                ->whereRaw('documents.deleted_at IS NULL');
        })
        ->join('categories', 'categories.id', '=', 'documents.category_id')
        ->join('users', 'users.id', '=', 'approvals_document.approver_id')
        ->where('approver_id', '=', Auth::id())
        ->orWhere('requestedBy', '=', Auth::id())
        ->orderBy('approvals_document.id', '=', 'desc')
        ->paginate(10);

    return view ('document.pending')
        ->with('pendingDocuments', $pendingDocuments);

}

更新

必须修改加入软删除的记录

能否将加入查询更改为以下

->join('documents', function ($join) `{ $join->on('documents.id', '=','approvals_document.document_id') 
->whereNull('documents.deleted_at'); })`