getCode(); } /** * Extract the index and columns that caused a unique constraint violation. * * @param Exception $exception * @return array{index: string|null, columns: list} */ protected function parseUniqueConstraintViolation(Exception $exception): array { [$index, $columns] = [null, []]; if (preg_match('#unique constraint "([^"]+)"#i', $message = $exception->getMessage(), $matches)) { $index = $matches[1]; } if (preg_match('#Key \(([^)]+)\)=#i', $message, $matches)) { $columns = array_map(trim(...), explode(',', $matches[1])); } return ['columns' => $columns, 'index' => $index]; } /** * Get the default query grammar instance. * * @return \Illuminate\Database\Query\Grammars\PostgresGrammar */ protected function getDefaultQueryGrammar() { return new QueryGrammar($this); } /** * Get a schema builder instance for the connection. * * @return \Illuminate\Database\Schema\PostgresBuilder */ public function getSchemaBuilder() { if (is_null($this->schemaGrammar)) { $this->useDefaultSchemaGrammar(); } return new PostgresBuilder($this); } /** * Get the default schema grammar instance. * * @return \Illuminate\Database\Schema\Grammars\PostgresGrammar */ protected function getDefaultSchemaGrammar() { return new SchemaGrammar($this); } /** * Get the schema state for the connection. * * @param \Illuminate\Filesystem\Filesystem|null $files * @param callable|null $processFactory * @return \Illuminate\Database\Schema\PostgresSchemaState */ public function getSchemaState(?Filesystem $files = null, ?callable $processFactory = null) { return new PostgresSchemaState($this, $files, $processFactory); } /** * Get the default post processor instance. * * @return \Illuminate\Database\Query\Processors\PostgresProcessor */ protected function getDefaultPostProcessor() { return new PostgresProcessor; } }