PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Laravel fasih - Apakah ada cara untuk menambahkan Petunjuk sebelum SELECT?

Anda dapat mengganti kelas PostgresConnection dan kelas PostgresGrammar untuk menambahkan logika Anda sendiri ke metode compileSelect di kelas 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;
    }
}

Perlu mendefinisikan kelas penyedia layanan, sangat penting untuk mendaftarkan penyedia layanan ini sebelum 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);
        });
    }
}

Dikonfigurasi di 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. Tidak dapat menyalin tabel ke database lain dengan pg_dump

  2. Bagaimana cara menghapus carriage return dan baris baru di Postgresql?

  3. Menghitung persentase dengan kueri GROUP BY

  4. Heroku on Rails - DATABASE_URL Tidak Valid

  5. PostgreSQL - jumlah maksimum parameter dalam klausa IN?