nbj/cockroachdb-laravel

CockroachDB 驱动程序适用于 Laravel 8

安装次数: 26,040

依赖关系: 0

建议者: 0

安全: 0

星标: 56

关注者: 6

分支: 17

开放性问题: 7

类型:软件包

0.0.7-alpha 2021-03-15 12:52 UTC

README

CockroachDB 数据库驱动程序适用于 Laravel 8

使用方法

步骤 1:通过 Composer 安装

composer require nbj/cockroachdb-laravel

步骤 2:添加服务提供者(在 Laravel 5.5 中会自动完成)

打开 config/app.php 并将以下内容添加到 "providers" 数组中:

Nbj\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'),
],

确保将 hostportdatabaseusernamepasswordschema 更新为您自己的配置。请注意,databaseschema 字段应相同。

安全模式

使用您的路径配置更新 sslcertsslkeysslrootcert

CockroachDB 2

当使用 PHP Postgres 驱动程序时,对 CockroachDB 处理模式的更改略有不同。因此,我们不需要使用:

'schema' => 'DATABASE-NAME'

我们需要使用 Postgres 默认的 public,因此将您的配置更改为:

'schema' => 'public'

然后一切应该按预期工作。

已知问题

  • 约束不能与表的创建在同一个迁移中。解决方案是在表创建后添加约束到自己的迁移。

在不使用 Laravel 的情况下使用

完全可以在这个驱动程序中不使用整个 Laravel 框架。Laravel 的数据库组件被封装在其自己的 Composer 包中,名为 illuminate/database。只需将此包添加到您的项目中,您就可以开始使用了。

composer require illuminate/database
composer require nbj/cockroachdb-laravel

要设置数据库连接,您需要创建一个新的 Capsule 并注册它。

<?php

use Illuminate\Database\Connection;
use Nbj\Cockroach\CockroachConnector;
use Nbj\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();