Почему SoftDelete не подделывает удаленную строку?
Может кто-нибудь сказать мне, почему с помощью delete()
метод не удалит выбранную строку в таблице? SoftDelete
работает хорошо, но строка, которая была мягко удалена, все еще существует в таблице. Я ожидаю, что моя строка таблицы будет скрыта или удалена, но не может. Любые советы или помощь приветствуются!:) я SoftDelete
мой стол такой.
контроллер:
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);
}
3 ответа
Можете ли вы изменить запрос на присоединение к ниже
->join('documents', function ($join) `{ $join->on('documents.id', '=','approvals_document.document_id')
->whereNull('documents.deleted_at'); })`
Мягкое удаление не удалит строку. Он установит метку времени для deleted_at
field и eloquent будут игнорировать все строки, для которых установлено значение для поля deleted_at
, Если вы реализовали мягкое удаление и хотите навсегда удалить строку, попробуйте использовать 'forceDelete()'
$hide->forceDelete();
Вы не можете сделать никакого сравнения с 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);
}
Обновить
Присоединение мягко удаленных записей должно быть изменено