我正在使用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(),但它也不起作用
onlyTrashed()
方法应该适合您。 Laravel删除条目的Docs。我见过有时候添加原始的select语句会搞砸它。
用select
和DB::raw
取出多余的位,然后在需要时添加它们。从最简单的开始:
$testOfDeletedOnlyJobs = Jobs::onlyTrashed()->get();
从这里开始,添加查询的其他部分以查看失败的原因和原因。如果上述内容什么都没有给您,也许没有删除的记录?
您可以使用Model::onlyTrashed()->get();
您是否正在寻找此帖子?How to get all rows (soft deleted too) from a table in Laravel?
由于有orWhere
,因此需要同时使用grouping和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);
您可以尝试这个。
在您的模型中-
use Illuminate\Database\Eloquent\SoftDeletes;
class ModelName extends Model
{
use SoftDeletes;
}
仅获取已删除的行
$search = $request->get('search');
$data = App\ModelName::onlyTrashed()
->where('id', $search)
->get();