-
Notifications
You must be signed in to change notification settings - Fork 3
Configuring a Datasource
First, we define a new Datasource in our config/app.php file with our namespaced Connection class name:
// In project_root/config/app.php:
'Datasources' => [
'default' => [
// ... Default SQL Datasource
],
'mongo_db' => [
'className' => 'CakeMonga\Database\MongoConnection',
]
],
Then we can instantiate our MongoDB connection anywhere that we need in the application via the ConnectionManager class:
class ExampleController extends Controller
{
public function index()
{
$cake_monga = ConnectionManager::get('mongo_db');
}
}
Then from there we can get our Monga instance by using the connect()
method on the returned connection:
$cake_monga = ConnectionManager::get('mongo_db');
$mongodb = $cake_monga->connect(); // An instance of the Monga Connection object
$database_list = $mongodb->listDatabases(); // We can call all of the methods on that Monga object provided by their API
Note that the $mongodb object instantiated above with the connect()
method is the same object returned by Monga::connection() in the Monga API:
$cake_monga = ConnectionManager::get('mongo_db');
$mongodb = $cake_monga->connect();
// Alternatively:
$mongodb = Monga::connection($dns, $config_opts);
This information should help you make the bridge between instantiating the Datasource using CakePHP and utilizing the Monga API for data retrieval and saving.
cakephp-monga accepts all of the same options in the Datasource configuration that can be passed into the MongoClient() object in PHP. Documentation for these options is defined here.
// In project_root/config/app.php:
'Datasources' => [
'default' => [
// ... Default SQL Datasource
],
'mongo_db' => [
'className' => 'CakeMonga\Database\MongoConnection',
'authMechanism' => null,
'authSource' => null,
'connect' => true,
'connectTimeoutMS' => 60000,
'db' => null,
'dns' => 'mongodb://localhost:27017',
'fsync' => null,
'journal' => null,
'gssapiServiceName' => 'mongodb',
'username' => null,
'password' => null,
'readPreference' => null,
'readPreferenceTags' => null,
'replicaSet' => null,
'secondaryAcceptableLatencyMS' => 15,
'socketTimeoutMS' => 30000,
'ssl' => false,
'w' => 1,
'wTimeoutMS' => 10000
]
],
By default, this library connects to the mongodb://localhost:27017
DNS string. You can specify a custom DNS to connect on by setting a 'dns' key on the connection's Datasource hash in the config/app.php file:
// In project_root/config/app.php:
'Datasources' => [
'mongo_db' => [
'className' => 'CakeMonga\Database\MongoConnection',
'dns' => 'mongodb://your.remote.host:27017'
]
],
Now on to Accessing Collections.