diff --git a/src/SearchBuilder.php b/src/SearchBuilder.php index 217c3b9..258fb81 100755 --- a/src/SearchBuilder.php +++ b/src/SearchBuilder.php @@ -28,6 +28,11 @@ class SearchBuilder /** * @var */ + private $trashed = false; + + /** + * @var + */ private $config; public function __construct(Repository $config) @@ -73,6 +78,19 @@ class SearchBuilder return $this; } + + /** + * @param $trashed + * + * @return $this + */ + public function trashed() + { + $this->trashed = true; + + return $this; + } + /** * @param $table * @param $searchFields @@ -104,7 +122,7 @@ class SearchBuilder // Create a new instance of the selected drivers 'class' and pass // through table and fields to search - $driverInstance = new $driver($this->table, $this->searchFields, $relevanceFieldName); + $driverInstance = new $driver($this->table, $this->searchFields, $relevanceFieldName,['*'],$this->trashed); return $driverInstance; } diff --git a/src/SearchDrivers/BaseSearchDriver.php b/src/SearchDrivers/BaseSearchDriver.php index eccd645..719fa74 100755 --- a/src/SearchDrivers/BaseSearchDriver.php +++ b/src/SearchDrivers/BaseSearchDriver.php @@ -18,6 +18,8 @@ abstract class BaseSearchDriver implements SearchDriverInterface protected $query; + protected $trashed; + /** * @param null $table * @param array $searchFields @@ -26,12 +28,13 @@ abstract class BaseSearchDriver implements SearchDriverInterface * * @internal param $relevanceField */ - public function __construct($table = null, $searchFields = [], $relevanceFieldName, $columns = ['*']) + public function __construct($table = null, $searchFields = [], $relevanceFieldName, $columns = ['*'],$trashed) { $this->searchFields = $searchFields; $this->table = $table; $this->columns = $columns; $this->relevanceFieldName = $relevanceFieldName; + $this->trashed = $trashed; } /** @@ -97,12 +100,24 @@ abstract class BaseSearchDriver implements SearchDriverInterface */ protected function run() { - $this->query = \DB::table($this->table) - ->select($this->columns) - ->where('deleted_at',NULL) - ->addSelect($this->buildSelectQuery($this->searchFields)) - ->orderBy($this->relevanceFieldName, 'desc') - ->having($this->relevanceFieldName, '>', 0); + // If they included trashed flag then give them all records including soft deletes + if($this->trashed) + { + $this->query = \DB::table($this->table) + ->select($this->columns) + ->addSelect($this->buildSelectQuery($this->searchFields)) + ->orderBy($this->relevanceFieldName, 'desc') + ->having($this->relevanceFieldName, '>', 0); + } + else + { + $this->query = \DB::table($this->table) + ->select($this->columns) + ->where('deleted_at',NULL) + ->addSelect($this->buildSelectQuery($this->searchFields)) + ->orderBy($this->relevanceFieldName, 'desc') + ->having($this->relevanceFieldName, '>', 0); + } return $this->query; }