首页 > 解决方案 > 如何在 Laravel 中仅找到已删除的行?

问题描述

SoftDeletes在我的项目中使用,它被识别为deleted_at在数据库表中,我想搜索并只查找已删除的行。

这是我的控制器代码

 public function trashedJobSearch(Request $request)
{
    $search = $request->get('search');
    $jobs = Jobs::select('id', 'company_name', 'position_name', 'job_description','deleted_at', 'created_at', 'expire_date', 'status')
        ->where(DB::raw('lower(company_name)'), 'like', '%' . mb_strtolower($search) . '%')
        ->orWhere(DB::raw('lower(position_name)'), 'like', '%' . mb_strtolower($search) . '%')
        ->where('deleted_at', '!=', null)
        ->paginate(10);

    return view('/trashed', compact('jobs'));
}

我尝试使用onlyTrashed(),但它也不起作用。

标签: phplaravel

解决方案


正如你所拥有的orWhere,你需要使用分组,并且onlyTrashed

Jobs::select('id', 'company_name', 'position_name', 'job_description','deleted_at', 'created_at', 'expire_date', 'status')
  ->where(function ($query) use ($search) {
        $query->where(DB::raw('lower(company_name)'), 'like', '%' . mb_strtolower($search) . '%')
              ->orWhere(DB::raw('lower(position_name)'), 'like', '%' . mb_strtolower($search) . '%');
   })->onlyTrashed()
     ->paginate(10);

推荐阅读