为什么 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'); })`
有人能告诉我为什么使用 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'); })`