nbj/cockroachdb-laravel is a Laravel package for cockroachdb driver for laravel 8.
It currently has 56 GitHub stars and 28.620 downloads on Packagist (latest version 0.0.7-alpha).
Install it with composer require nbj/cockroachdb-laravel.
Discover more Laravel packages by nbj
or browse all Laravel packages to compare alternatives.
Last updated
CockroachDB database driver for Laravel 8
composer require nbj/cockroachdb-laravel
Open config/app.php and, to your "providers" array, add:
Nbj\Cockroach\CockroachServiceProvider::class
Open config/datbase.php and, to your "connections" array, add:
'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.
Update sslcert, sslkey and sslrootcert with your path configuration.
Changes made to CockroachDB handles schemas slightly different when using the PHP Postgres driver. So instead of using:
'schema' => 'DATABASE-NAME'
We need to use the Postgres default of public so change your config
to:
'schema' => 'public'
And everything should work as expected.
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.
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.
<?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:
$db->bootEloquent();
By this point you are able to use the globally registered DatabaseManager like this:
<?php
use Illuminate\Database\Capsule\Manager as DB;
require 'vendor/autoload.php';
// Fetch all users from the users table
$users = DB::table('users')->get();