taran / cockroachdb-lumen
CockroachDB 8的驱动程序
0.0.9-alpha
2021-02-24 06:19 UTC
This package is auto-updated.
Last update: 2024-09-24 14:26:55 UTC
README
从nbj/cockroachdb-laravel分叉的CockroachDB 8数据库驱动程序
用法
步骤 1:通过Composer安装
composer require taran/cockroachdb-lumen
步骤 2:添加服务提供者(在Laravel 5.5中此操作自动完成)
打开 config/app.php 并将以下内容添加到您的 "providers" 数组中:
Taran\Cockroach\CockroachServiceProvider::class
步骤 3:添加数据库驱动配置
打开 config/database.php 并将以下内容添加到您的 "connections" 数组中:
'cockroach' => [ 'driver' => 'cockroach', 'host' => env('DB_HOST', 'HOSTNAME-OF-COCKROACH-SERVER'), 'port' => env('DB_PORT', '26257'), 'database' => env('DB_DATABASE', 'DATABASE-NAME'), 'username' => env('DB_USERNAME', 'root'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '', 'schema' => 'DATABASE-NAME', 'sslmode' => 'prefer', // Only set these keys if you want to run en secure mode // otherwise you can them out of the configuration array 'sslcert' => env('DB_SSLCERT', 'client.crt'), 'sslkey' => env('DB_SSLKEY', 'client.key'), 'sslrootcert' => env('DB_SSLROOTCERT', 'ca.crt'), ],
请确保更新 host、port、database、username、password 和 schema 到您的配置中。请注意,database 和 schema 字段应该是相同的。
安全模式
使用您的路径配置更新 sslcert、sslkey 和 sslrootcert。
CockroachDB 2
当使用PHP Postgres驱动程序时,对CockroachDB处理模式所做的更改与Postgres默认设置略有不同。因此,我们不需要使用
'schema' => 'DATABASE-NAME'
我们需要使用Postgres的默认值 public,因此将您的配置更改为
'schema' => 'public'
然后,所有内容都应按预期工作。
已知问题
- 约束不能在创建表的迁移中与创建表同时存在。解决方法是,在表创建后,将其约束添加到自己的迁移中。
无Lumen的用法
完全可以使用此驱动程序而不使用整个Lumen框架。Laravel的数据库组件已在名为 illuminate/database 的composer包中优雅地打包。只需将此包添加到您的项目中,您就可以开始使用了。
composer require illuminate/database
composer require taran/cockroachdb-lumen
要设置数据库连接,您需要创建一个新的 Capsule 并注册它。
<?php use Illuminate\Database\Connection; use Taran\Cockroach\CockroachConnector; use Taran\Cockroach\CockroachConnection; use Illuminate\Database\Capsule\Manager as DB; require 'vendor/autoload.php'; $config = [ // Your configuration goes here ]; // Add connection resolver for the cockroach driver Connection::resolverFor('cockroach', function ($connection, $database, $prefix, $config) { $connection = (new CockroachConnector)->connect($config); return new CockroachConnection($connection, $database, $prefix, $config); }); // Create a new DatabaseManager instance $db = new DB; // Add a connection using your configuration $db->addConnection($config); // Register the DatabaseManager instance as global $db->setAsGlobal();
如果您选择,甚至可以使用Eloquent(Laravel的ORM)。只需添加
$db->bootEloquent();
到此为止,您可以使用全局注册的DatabaseManager,如下所示
<?php use Illuminate\Database\Capsule\Manager as DB; require 'vendor/autoload.php'; // Fetch all users from the users table $users = DB::table('users')->get();