1) Innanzitutto, devi modificare l'opzione PDO che stai fornendo nelle opzioni nell'array pgsql del tuo database.php nel modo giusto è come indicato di seguito.
'pgsql' => [
'driver' => 'pgsql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '5434'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
'options' => [
PDO::ATTR_EMULATE_PREPARES => true
]
]
2) In secondo luogo, e la cosa più importante è assicurarsi di utilizzare l'impostazione "ATTR_EMULATE_PREPARES" su "true" con ogni connessione al database che si tenta di connettere nel proprio Database.php file.
Ad esempio,
'test' => [
'driver' => 'pgsql',
'host' => env('test', '127.0.0.1'),
'port' => env('test', '5434'),
'database' => env('DB_TEST_DATABASE', 'test'),
'username' => env('DB_USERNAME', 'test'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
'options' => [
PDO::ATTR_EMULATE_PREPARES => true
]
],
'test1' => [
'driver' => 'pgsql',
'host' => env('test1', '127.0.0.1'),
'port' => env('test1', '5434'),
'database' => env('DB_TEST1_DATABASE', 'test1'),
'username' => env('DB_USERNAME', 'test'),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'prefix' => '',
'schema' => 'public',
'sslmode' => 'prefer',
'options' => [
PDO::ATTR_EMULATE_PREPARES => true
]
]
Assicurati di utilizzare "ATTR_EMULATE_PREPARES" su true per ogni connessione al database che fai nella tua applicazione, nei tuoi commenti effettui la connessione solo con "pgsql" con enfasi solo per la connessione postgres sql e non con il database che la tua applicazione comunica quale è in postgres.
Spero che questo ti aiuti a risolvere la tua domanda. Divertiti!!!