/**
  * Returns current database prefix
  *
  * @return string
  */
 public function databasePrefix()
 {
     if ($this->query_type == 'builder') {
         $query = $this->query;
     } else {
         $query = $this->query->getQuery();
     }
     return $query->getGrammar()->getTablePrefix();
 }
 /**
  * Date Formate Database
  *
  * @param Builder  $query    Builder
  * @param string   $key      Column
  * @param string   $operator String Operator
  *
  * @return string
  */
 private function dateFormatDb($query, $key, $operator)
 {
     if (!$this->grammar) {
         $this->grammar = $query->getQuery()->getGrammar();
     }
     $key = $this->grammar->wrap($key);
     $formatDb = sprintf("%s %s ?", $key, $operator);
     switch (true) {
         case $this->grammar instanceof \Illuminate\Database\Query\Grammars\MySqlGrammar:
             $formatDb = sprintf("DATE(%s) %s ?", $key, $operator);
             break;
         case $this->grammar instanceof \Illuminate\Database\Query\Grammars\PostgresGrammar:
             $formatDb = sprintf("DATE_TRUNC('day', %s) %s ?", $key, $operator);
             break;
         case $this->grammar instanceof \Illuminate\Database\Query\Grammars\SQLiteGrammar:
             $formatDb = sprintf("strftime('%%Y-%%m-%%d', %s) %s ?", $key, $operator);
             break;
         case $this->grammar instanceof \Illuminate\Database\Query\Grammars\SqlServerGrammar:
             $formatDb = sprintf("CAST(%s AS DATE) %s ?", $key, $operator);
     }
     return $formatDb;
 }
 /**
  * Add the force delete extension to the builder.
  *
  * @param  \Illuminate\Database\Eloquent\Builder  $builder
  * @return void
  */
 protected function addForceDelete(Builder $builder)
 {
     $builder->macro('forceDelete', function (Builder $builder) {
         return $builder->getQuery()->delete();
     });
 }
 /**
  * Remove the scope from the given Eloquent query builder.
  *
  * @param  \Illuminate\Database\Eloquent\Builder  $builder
  * @param  \Illuminate\Database\Eloquent\Model  $model
  * @return void
  */
 public function remove(Builder $builder, Model $model)
 {
     $column = $model->getQualifiedDeletedAtColumn();
     $query = $builder->getQuery();
     $query->wheres = collect($query->wheres)->reject(function ($where) use($column) {
         return $this->isSoftDeleteConstraint($where, $column);
     })->values()->all();
 }