mofing / mongodb
An Mongodb datasource for CakePHP 3.0
Installs: 7
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 30
Type:cakephp-plugin
Requires
- php: ^5.4|^7.0
- cakephp/cakephp: ^3.5
- mongodb/mongodb: ^1.2
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2024-12-12 04:57:12 UTC
README
Mongodb for Cakephp3
An Mongodb datasource for CakePHP 3.5
Installing via composer
Install composer and run:
composer require mofing/mongodb
Connecting the Plugin to your application
add the following line in your config/bootstrap.php to tell your application to load the plugin:
Plugin::load('Mofing/Mongodb');
Defining a connection
Now, you need to set the connection in your config/app.php file:
'Datasources' => [ 'default' => [ 'className' => 'Mofing\Mongodb\Database\Connection', 'driver' => 'Mofing\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' => '' ], ],
SSH tunnel variables (starting with 'ssh_')
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.
Models
After that, you need to load Hayko\Mongodb\ORM\Table in your tables class:
//src/Model/Table/YourTable.php use Mofing\Mongodb\ORM\Table; class CategoriesTable extends Table { }
Observations
The function find() works only in the old fashion way. So, if you want to find something, you to do like the example:
$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
$this->Categories->find('all', ['conditions' => [ '_id' => new \MongoDB\BSON\ObjectId('5a7861909db0b47d605c3865'), 'foo.bar' => new \MongoDB\BSON\Regex('^(foo|bar)?baz$', 'i') ]]);