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

时间:2016-11-02 02:50:33

标签: php laravel laravel-5.2 soft-delete

有人可以告诉我为什么使用<?xml version="1.0" standalone="yes"?> <DocumentElement> <GridView> <Genre>Wald</Genre> <Pfad>C:\Users\Kong\Desktop\Beards\Wald</Pfad> <Hotkey>1</Hotkey> </GridView> <GridView> <Genre>Wald Nachts</Genre> <Pfad>C:\Users\Kong\Desktop\Beards\Wald Nachts</Pfad> <Hotkey>2</Hotkey> </GridView> </DocumentElement> 方法不会删除表中的选定行? delete()运行良好,但是已经存在软删除的行仍然存在于表中。我期待我的表行将被隐藏或删除,但它不能。任何提示或帮助将不胜感激! :)我SoftDelete这样的表。

控制器:

SoftDelete

2 个答案:

答案 0 :(得分:1)

是否可以将联接查询更改为

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

答案 1 :(得分:0)

您无法通过NULL方法与Laravel SQL中的where值进行任何比较。您可以使用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);

}

更新

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