php7 环境 phalcon 如何使用mongodb数据库

phalcon 如何使用mongodb数据

官方文檔上面有这样的描述: Please note that if you are using the Mongo driver provided by PHP 7, the ODM will not work for you. There is an incubator adapter but all the Mongo code must be rewritten (new Bson type instead of arrays, no MongoId, no MongoDate, etc…). Please ensure that you test your code before upgrading to PHP 7 and/or Phalcon 3+ 大概意思就是如果你用的php7 提供的mongo驱动的话是不行的。 原因是: phalcon提供的驱动是基于mongo的驱动, 但是php7 已经不支持了, php7使用的是mongodb的驱动。

不过官方提供了解决方案,https://github.com/phalcon/incubator 按照文档上面的去用conposer安装。

使用

use Phalcon\Mvc\Collection\Manager;
use Phalcon\Db\Adapter\MongoDB\Client;

// Initialise the mongo DB connection.
$di->setShared('mongo', function () {
    /** @var \Phalcon\DiInterface $this */
    $config = $this->getShared('config');
    
    if (!$config->database->mongo->username || !$config->database->mongo->password) {
        $dsn = 'mongodb://' . $config->database->mongo->host;
    } else {
        $dsn = sprintf(
            'mongodb://%s:%s@%s',
            $config->database->mongo->username,
            $config->database->mongo->password,
            $config->database->mongo->host
        );
    }
    
    $mongo = new Client($dsn);

    return $mongo->selectDatabase($config->database->mongo->dbname);
});

// Collection Manager is required for MongoDB
$di->setShared('collectionManager', function () {
    return new Manager();
});

这样配置好以后, 发现报错, 找不到 Client类,这个安装完成后是安装到了 composer 的目录 vender目录下面, 那么你需要在执行代码之前使用 composerautoload , 这样在找不到phalcon 扩展的情况下会自动加载 composer 的文件, 如此就没有问题了。

使用

use Phalcon\Mvc\MongoCollection;

class UserCollection extends MongoCollection
{
    public $name;
    public $email;
    public $password;
    
    public function getSource()
    {
        return 'users';
    }
}

如此即可使用phalconcollection组件。

转载于:https://my.oschina.net/anziguoer/blog/3015327

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值