dev-master
9999999-devAn Mongodb datasource for CakePHP 3.0
MIT
The Requires
- php ^5.4|^7.0
- ext-mongodb ^1.3
- cakephp/cakephp ^3.5
- mongodb/mongodb ^1.2
The Development Requires
by tiaguinho
An Mongodb datasource for CakePHP 3.0
An Mongodb datasource for CakePHP 3.5, (*2)
Install composer and run:, (*3)
composer require hayko/mongodb dev-master
add the following line in your config/bootstrap.php to tell your application to load the plugin:, (*4)
Plugin::load('Hayko/Mongodb');
Now, you need to set the connection in your config/app.php file:, (*5)
'Datasources' => [ 'default' => [ 'className' => 'Hayko\Mongodb\Database\Connection', 'driver' => 'Hayko\Mongodb\Database\Driver\Mongodb', 'persistent' => false, 'host' => 'localhost', 'port' => 27017, 'login' => '', 'password' => '', 'database' => 'devmongo', 'ssh_host' => '', 'ssh_port' => 22, 'ssh_user' => '', 'ssh_password' => '', 'ssh_pubkey_path' => '', 'ssh_privatekey_path' => '', 'ssh_pubkey_passphrase' => '' ], ],
If you want to connect to MongoDB using a SSH tunnel, you need to set additional variables in your Datasource. Some variables are unnecessary, depending on how you intend to connect. IF you're connecting using a SSH key file, the ssh_pubkey_path
and ssh_privatekey_path
variables are necessary and the ssh_password
variable is unnecessary. If you're connecting using a text-based password (which is not a wise idea), the reverse is true. The function needs, at minimum, ssh_host
, ssh_user
and one method of authentication to establish a SSH tunnel., (*6)
After that, you need to load Hayko\Mongodb\ORM\Table in your tables class:, (*7)
//src/Model/Table/YourTable.php use Hayko\Mongodb\ORM\Table; class CategoriesTable extends Table { }
The function find() works only in the old fashion way. So, if you want to find something, you to do like the example:, (*8)
$this->Categories->find('all', ['conditions' => ['name' => 'teste']]); $this->Categories->find('all', ['conditions' => ['name LIKE' => 'teste']]); $this->Categories->find('all', ['conditions' => ['name' => 'teste'], 'limit' => 3]);
You can also use the advanced conditions of MongoDB using the MongoDB\BSON
namespace, (*9)
$this->Categories->find('all', ['conditions' => [ '_id' => new \MongoDB\BSON\ObjectId('5a7861909db0b47d605c3865'), 'foo.bar' => new \MongoDB\BSON\Regex('^(foo|bar)?baz$', 'i') ]]);
An Mongodb datasource for CakePHP 3.0
MIT