Wallogit.com
2017 © Pedro Peláez
CockroachDB driver for Laravel 5.6
CockroachDB database driver for Laravel 8, (*1)
composer require nbj/cockroachdb-laravel
Open config/app.php and, to your "providers" array, add:, (*2)
Nbj\Cockroach\CockroachServiceProvider::class
Open config/datbase.php and, to your "connections" array, add:, (*3)
'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'),
],
Make sure to update host, port, database, username, password and schema to your configuration. Note the database and schema fields should be the same., (*4)
Update sslcert, sslkey and sslrootcert with your path configuration., (*5)
Changes made to CockroachDB handles schemas slightly different when using the PHP Postgres driver. So instead of using:, (*6)
'schema' => 'DATABASE-NAME'
We need to use the Postgres default of public so change your config
to:, (*7)
'schema' => 'public'
And everything should work as expected., (*8)
It is entirely possible to use this driver without the entire Laravel framework.
Laravel's database components are neatly packaged in its own composer package
called illuminate/database Simply require this package into your project, and
you are ready to go., (*9)
composer require illuminate/database composer require nbj/cockroachdb-laravel
To set up a database connection you need to create a new Capsule and register it., (*10)
<?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();
It is even possible to use Eloquent (Laravel's ORM) if you choose to. Simply add:, (*11)
$db->bootEloquent();
By this point you are able to use the globally registered DatabaseManager like this:, (*12)
<?php
use Illuminate\Database\Capsule\Manager as DB;
require 'vendor/autoload.php';
// Fetch all users from the users table
$users = DB::table('users')->get();