PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Laravel eloquent - Има ли начин да добавите подсказка преди SELECT?

Можете да замените класа PostgresConnection и класа PostgresGrammar, за да добавите своя собствена логика към метода compileSelect в класа 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;
    }
}

Трябва да дефинирате клас на доставчик на услуги, много е важно да регистрирате този доставчик на услуги преди 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);
        });
    }
}

Конфигуриран в 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. Предайте масив от тагове към plpgsql функция и я използвайте в условие WHERE

  2. Как да използвам spring data jpa за заявка за колона jsonb?

  3. Разделени бази данни pgAdmin и cmd psql

  4. node-postgres с огромно количество заявки

  5. Как да обединим две подзаявки в SQLAlchemy и postgresql