edsol / mongodb-cakephp
为 CakePHP 3.0 提供的 Mongodb 数据源
dev-master
2024-07-29 10:57 UTC
Requires
- php: ^5.4|^7.0
- ext-mongodb: ^1.3
- cakephp/cakephp: ^3.5
- mongodb/mongodb: ~1.4.0
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2024-09-29 11:18:03 UTC
README
更多内容
该分支修复了一些错误并添加了在集合中计数行的功能
$this->Categories->count($filters, $options);
Cakephp3 的 Mongodb
为 CakePHP 3.5 提供的 Mongodb 数据源
通过 composer 安装
安装 composer 并运行
composer require Edsol/mongodb 1.0.0
连接插件到您的应用
在您的 config/bootstrap.php 文件中添加以下行,以告诉您的应用程序加载插件
Plugin::load('Edsol/Mongodb');
定义连接
现在,您需要在 config/app.php 文件中设置连接
'Datasources' => [ 'default' => [ 'className' => 'Edsol\Mongodb\Database\Connection', 'driver' => 'Edsol\Mongodb\Database\Driver\Mongodb', 'persistent' => false, 'host' => 'localhost', 'port' => 27017, 'srv' => false, 'username' => '', 'password' => '', 'database' => 'devmongo', 'ssh_host' => '', 'ssh_port' => 22, 'ssh_user' => '', 'ssh_password' => '', 'ssh_pubkey_path' => '', 'ssh_privatekey_path' => '', 'ssh_pubkey_passphrase' => '' ], ],
SSH 隧道变量(以 'ssh_' 开头)
如果您想通过 SSH 隧道连接到 MongoDB,您需要在您的数据源中设置额外的变量。一些变量根据您的连接方式可能是不必要的。如果您使用 SSH 密钥文件连接,则需要 ssh_pubkey_path
和 ssh_privatekey_path
变量,而 ssh_password
变量是不必要的。如果您使用基于文本的密码(这 不是 一个好主意),则情况相反。函数至少需要 ssh_host
、ssh_user
和一种建立 SSH 隧道的方法。
模型
之后,您需要在您的表类中加载 Edsol\Mongodb\ORM\Table
//src/Model/Table/YourTable.php use Edsol\Mongodb\ORM\Table; class CategoriesTable extends Table { }
观察
find() 函数仅以旧方式工作。因此,如果您想查找某些内容,您需要像以下示例那样操作
$this->Categories->find('all', ['conditions' => ['name' => 'teste']]); $this->Categories->find('all', ['conditions' => ['name LIKE' => 'teste']]); $this->Categories->find('all', ['conditions' => ['name' => 'teste'], 'limit' => 3]);
您也可以使用 MongoDB 的高级条件,使用 MongoDB\BSON
命名空间
$this->Categories->find('all', ['conditions' => [ '_id' => new \MongoDB\BSON\ObjectId('5a7861909db0b47d605c3865'), 'foo.bar' => new \MongoDB\BSON\Regex('^(foo|bar)?baz$', 'i') ]]);