我工作(编辑)在数据库中的laravel 5.8的项目基础上我有“联系人”表的主要列是:
(一个月一次,一个月一次,...,一个月二次,一个月三次,一个月四次,一个月五次...)
因此,当使用**$model-〉delete()进行软删除时,它将非常有效**
删除前(id :1
、name: 'name'
、..、deleted_at : null
、deleted_by :null
、agency_id : 1
、contactable_id : 1
)
删除后(id :1
、name: 'name'
、...、deleted_at : (dateValue)
、deleted_by :1
、agency_id : 1
、contactable_id : 1
)
class ContactController extends Controller
{
public function delete(Request $request)
{
if ($request->ajax()) {
\Log::info($request->contact_id);
try {
$deleted = $this->model_instance::find($request->contact_id)->delete();
} catch (\Exception $ex) {
\Log::info($ex->getMessage());
}
if ($deleted) {
$log_message = trans('contacts.delete_log') . '#' . $request->contact_id;
//logActivity($log_message);
return response()->json(['status' => 'success', 'message' => 'deleted_successfully']);
} else {
return response()->json(['status' => 'fail', 'message' => 'fail_while_delete']);
}
}
return redirect()->route($this->index_route);
}
}
因此,当使用**$model-〉forceDelete()for从数据库中永久删除(forceDelete)**时,不会按预期工作,但会使用用户编号填充deleted_by
,并使用null
值保留deleted_at
强制删除之前(id :1
,name: 'name'
,..,deleted_at : null
,deleted_by :null
agency_id : 1
contactable_id : 1
)
强制删除后(id :1
,name: 'name'
,..,deleted_at : null
,deleted_by :1
agency_id : 1
contactable_id : 1
)
class ContactController extends Controller
{
public function forceDelete(Request $request)
{
if ($request->ajax()) {
\Log::info($request->contact_id);
try {
$deleted = $this->model_instance::withTrashed()->find($request->contact_id)->forceDelete();
} catch (\Exception $ex) {
\Log::info($ex->getMessage());
}
// if ($deleted) {
// $log_message = trans('contacts.delete_log') . '#' . $request->contact_id;
// return response()->json(['status' => 'success', 'message' => 'deleted_successfully']);
// } else {
// return response()->json(['status' => 'fail', 'message' => 'fail_while_delete']);
// }
}
// return redirect()->route($this->index_route);
}
}
返回真值
所以这个方法是这样工作的,或者我的代码在某些地方有问题(我的意思是不是jsut的previos代码)?!
使用软删除在某些情况下使用delete(用于软删除),在其他情况下使用forceDelete(用于从数据库中删除)
对于软删除,它工作得很好,对于强制删除,它需要另一种情况
1条答案
按热度按时间y4ekin9u1#
不会起作用。
使用
where
代替find
:这将非常有效。