Как я могу найти только удаленные строки в Laravel? - PullRequest
0 голосов
/ 22 марта 2020

Я использую 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(), но он тоже не работает.

Ответы [ 4 ]

0 голосов
/ 22 марта 2020

Вы можете попробовать это.

В вашей модели -

use Illuminate\Database\Eloquent\SoftDeletes;

class ModelName extends Model
{
    use SoftDeletes;
}

Чтобы получить только удаленные строки

$search = $request->get('search');
$data = App\ModelName::onlyTrashed()
                ->where('id', $search)
                ->get();
0 голосов
/ 22 марта 2020

Метод onlyTrashed() должен работать для вас. Документы для Laravel удаленных записей. Я видел времена, когда добавление необработанного оператора select все же приводило к ошибкам.

Извлеките дополнительные биты с помощью select и DB::raw, а затем добавьте их после того, как у вас есть то, что вам нужно. Начните с самого простого:

$testOfDeletedOnlyJobs = Jobs::onlyTrashed()->get();

Отсюда добавьте другие части вашего запроса, чтобы увидеть, где и почему он терпит неудачу. Если вышесказанное ничего не дает, возможно, нет удаленных записей?

0 голосов
/ 22 марта 2020

Вы можете использовать Model::onlyTrashed()->get();

Вы уже искали этот пост? Как получить все строки (тоже мягко удаленные) из таблицы в Laravel?

0 голосов
/ 22 марта 2020

Поскольку у вас есть 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...