hackerboy/laravel-cockroachdb

CockroachDB 驱动程序,适用于 Laravel

安装: 97

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 17

类型:package

0.0.8-alpha 2019-09-27 18:44 UTC

This package is auto-updated.

Last update: 2024-09-28 06:00:43 UTC


README

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

使用方法

步骤 1:通过 Composer 安装

composer require hackerboy/laravel-cockroachdb

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

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

HackerBoy\LaravelCockroachDB\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' => 'public',
    '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 字段应相同。

(蓝图)primary() 方法无法工作!

在表创建后添加主键目前不支持 。因此,蓝图方法 $table->primary() 不会产生任何效果。

如果您想将列设置为主键,请使用 addColumn 方法。例如,如果您想将 UUID 列设置为主键

// Blueprint $table
$table->addColumn('uuid', 'id', [
    'primary' => true, // Set this column as primary
    'gen_random_uuid' => true // Set default value as gen_random_uuid() (https://www.cockroachlabs.com/docs/stable/uuid.html)
]);

安全模式

使用您的路径配置更新 sslcertsslkeysslrootcert

CockroachDB 2

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

'schema' => 'DATABASE-NAME'

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

'schema' => 'public'

并且一切应该像预期的那样工作。

已知问题

  • 约束不能与表的创建放在同一个迁移中。解决方案是在表创建后创建一个单独的迁移来添加约束。

在不使用 Laravel 的情况下使用

在不使用整个 Laravel 框架的情况下使用此驱动程序是完全可能的。Laravel 的数据库组件在其自己的 composer 包 illuminate/database 中打包得很好。只需将此包要求到您的项目中,您就可以开始了。

composer require illuminate/database
composer require hackerboylaravel-cockroachdb

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

<?php

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