PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Laravel elokwentny - czy istnieje sposób na dodanie podpowiedzi przed SELECT?

Możesz nadpisać klasę PostgresConnection i klasę PostgresGrammar, aby dodać własną logikę do metody compileSelect w klasie PostgresGrammar.

class PostgresConnection extends \Illuminate\Database\PostgresConnection
{
    /**
     * @return \Illuminate\Database\Grammar|\Illuminate\Database\Query\Grammars\PostgresGrammar
     */
    protected function getDefaultQueryGrammar()
    {
        return $this->withTablePrefix(new PostgresGrammar());
    }
}
class PostgresGrammar extends \Illuminate\Database\Query\Grammars\PostgresGrammar
{
    /**
     * Compile a select query into SQL.
     *
     * @param  \Illuminate\Database\Query\Builder $query
     *
     * @return string
     */
    public function compileSelect(Builder $query)
    {
        $sql = parent::compileSelect($query);
        return '/*+ IndexScan(users) */' . $sql;
    }
}

Musisz zdefiniować klasę usługodawcy, bardzo ważne jest, aby zarejestrować tego usługodawcę przed Illuminate\Database\DatabaseServiceProvider::class

class DatabasePostgresServiceProvider extends ServiceProvider
{
    /**
     * 此外,在 Illuminate\Database\DatabaseServiceProvider::class 之前注册此服务提供程序非常重要
     *
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Connection::resolverFor('postgres', function ($connection, $database, $prefix, $config) {
            // Use your own defined PostgresConnection class here.
            return new PostgresConnection($connection, $database, $prefix, $config);
        });
    }
}

Skonfigurowany w config/app.php

'providers' => [
        // .... 
        DatabasePostgresServiceProvider::class,
        Illuminate\Database\DatabaseServiceProvider::class,

    ],



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uwierzytelnianie hasłem kończy się niepowodzeniem przy złożonym haśle

  2. Jak zresetować domyślne hasło użytkownika postgresql 9.2 (zwykle „postgres”) w systemie Mac OS x 10.8.2?

  3. Jak mogę utworzyć kolumnę w postgresie z wartości i selekcji opartych na innych kolumnach?

  4. Jak szybko rozpakować tablicę 2d w tablicę 1d w PostgreSQL?

  5. Pozycja kolumny w indeksie