Laravel-OCI8 — это пакет драйверов баз данных Oracle для Laravel. Laravel-OCI8 — это расширение Illuminate/Database, которое использует расширение OCI8 для связи с Oracle. Спасибо @taylorotwell.
Вы найдете удобную и обновленную документацию здесь: Документы Laravel-OCI8.
Все об oracle и php: Руководство по Underground PHP и Oracle
Ларавел | Упаковка |
---|---|
5.1.х | 5.1.х |
5.2.х | 5.2.х |
5.3.х | 5.3.х |
5.4.х | 5.4.х |
5.5.х | 5.5.х |
5.6.х | 5.6.х |
5.7.х | 5.7.х |
5.8.х | 5.8.х |
6.х | 6.х |
7.х | 7.х |
8.х | 8.х |
9.х | 9.х |
10.х | 10.х |
11.х | 11.х |
композитору требуется yajra/laravel-oci8:^11
После того как Composer установит или обновит ваши пакеты, вам необходимо зарегистрировать Laravel-OCI8. Откройте config/app.php
, найдите ключ провайдера и добавьте:
YajraOci8Oci8ServiceProvider::класс,
Наконец, вы можете при желании опубликовать файл конфигурации, выполнив следующую команду Artisan. Если файл конфигурации не опубликован, пакет автоматически будет использовать то, что объявлено в конфигурации базы данных файлов .env
.
поставщик php artisan:publish --tag=oracle
Это скопирует файл конфигурации в config/oracle.php
.
Примечание. Для конфигурации Laravel Lumen убедитесь, что в вашем проекте есть файл
config/database.php
, и добавьте конфигурацию ниже:
'oracle' => ['driver' => 'oracle','tns' => env('DB_TNS', ''),'host' => env('DB_HOST', ''),'port' => env('DB_PORT', '1521'),'database' => env('DB_DATABASE', ''),'service_name' => env('DB_SERVICE_NAME', ''),'username' => env('DB_USERNAME', ''),'password' => env('DB_PASSWORD', ''),'charset' => env('DB_CHARSET' , 'AL32UTF8'),'prefix' => env('DB_PREFIX', ''),'prefix_schema' => env('DB_SCHEMA_PREFIX', ''),'edition' => env('DB_EDITION', 'ora$base'),'server_version' => env('DB_SERVER_VERSION', '11g'),'load_balance' => env ('DB_LOAD_BALANCE', 'да'),'dynamic' => [],'max_name_len' => env('ORA_MAX_NAME_LEN', 30), ],
Затем вы можете установить данные подключения в свои файлы
.env
:
DB_CONNECTION=oracleDB_HOST=oracle.hostDB_PORT=1521DB_SERVICE_NAME=orclDB_DATABASE=xeDB_USERNAME=hrDB_PASSWORD=hr
Если вы хотите подключиться к кластеру, содержащему несколько хостов, вы можете либо установить
tns
вручную, либо указать хост как массив, разделенный запятыми, и настроить другие поля по своему усмотрению:
DB_CONNECTION=oracleDB_HOST=oracle1.host, oracle2.hostDB_PORT=1521DB_SERVICE_NAME=orclDB_LOAD_BALANCE=noDB_DATABASE=xeDB_USERNAME=hrDB_PASSWORD=hr
Если вам нужно подключиться с именем службы вместо tns, вы можете использовать конфигурацию ниже:
'oracle' => ['driver' => 'oracle','host' => 'oracle.host','port' => '1521','database' => 'xe','service_name' => ' sid_alias','username' => 'hr','password' => 'hr','charset' => '','prefix' => '', ]
В некоторых случаях вам может потребоваться динамическая установка параметров соединения в вашем приложении. Например, вы можете иметь доступ к более чем одной базе данных, или у ваших пользователей уже могут быть свои учетные записи в базе данных Oracle:
'oracle' => ['driver' => 'oracle','host' => 'oracle.host','port' => '1521','service_name' => 'sid_alias','prefix' => ' Schemaowner','dynamic' => [AppModelsOracleConfig::class, 'dynamicConfig'], ]
Функция обратного вызова в вашем приложении должна быть статической и принимать ссылку на массив $config[]
(который уже будет заполнен значениями, установленными в файле конфигурации):
пространство имен AppModelsOracle;class Config {public static function DynamicConfig(&$config) {if (IlluminateSupportFacadesAuth::check()) {$config['username'] = AppOracleConfig::getOraUser();$config['password'] = AppOracleConfig ::getOraPass(); } } }
Затем запустите установку Laravel...
По умолчанию имя объекта БД ограничено 30 символами. Чтобы увеличить лимит, вы можете установить ORA_MAX_NAME_LEN=128
в вашем файле .env
.
Примечание: для этой конфигурации требуется Oracle 12c02 или выше .
При использовании oracle мы можем столкнуться с проблемой аутентификации, поскольку запросы oracle по умолчанию чувствительны к регистру. Используя этого поставщика пользователей Oracle, мы теперь сможем избежать проблем с пользователем при входе в систему и невозможности забытого пароля из-за поиска с учетом регистра.
Чтобы использовать, просто обновите конфигурацию auth.php
и установите драйвер oracle
'providers' => ['users' => ['driver' => 'oracle','model' => AppUser::class, ], ]
Арджай Анхелес
Джимми Фелдер
Все участники
Лицензия MIT (MIT). Дополнительную информацию см. в файле лицензии.