Skip to content

Commit

Permalink
handle soft deletes
Browse files Browse the repository at this point in the history
  • Loading branch information
taylorotwell committed Jun 29, 2021
1 parent ad60f5b commit f04927d
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions src/Engines/CollectionEngine.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

namespace Laravel\Scout\Engines;

use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Arr;
use Illuminate\Support\LazyCollection;
use Illuminate\Support\Str;
use Laravel\Scout\Builder;
Expand Down Expand Up @@ -82,16 +84,28 @@ public function paginate(Builder $builder, $perPage, $page)
*/
protected function searchModels(Builder $builder)
{
$models = $builder->model->query()
$query = $builder->model->query()
->when(count($builder->wheres) > 0, function ($query) use ($builder) {
foreach ($builder->wheres as $key => $value) {
if ($key === '__soft_deleted') {
continue;
}

$query->where($key, $value);
}
})
->orderBy($builder->model->getKeyName(), 'desc')
->get();
->orderBy($builder->model->getKeyName(), 'desc');

if (Arr::get($builder->wheres, '__soft_deleted') === 0) {
$query = $query->withoutTrashed();
} elseif (Arr::get($builder->wheres, '__soft_deleted') === 1) {
$query = $query->onlyTrashed();
} elseif (in_array(SoftDeletes::class, class_uses_recursive(get_class($builder->model))) &&
config('scout.soft_delete', false)) {
$query = $query->withTrashed();
}

$models = $models->values();
$models = $query->get()->values();

if (count($models) === 0) {
return $models;
Expand Down

0 comments on commit f04927d

Please sign in to comment.