sachoo / phalcon-cassandra
Phalcon的Cassandra库
1.3.2
2018-02-21 12:51 UTC
Requires
- php: >=5.5
- ext-cassandra: *
- ext-phalcon: ^3.0
- sachoo/phalcon-model-annotations: 1.*
Requires (Dev)
- codeception/codeception: 2.*
- phpunit/phpunit: ^6.2
This package is not auto-updated.
Last update: 2024-09-14 19:47:41 UTC
README
需求
- PHP >= 5.3
- Cassandra php驱动https://github.com/datastax/php-driver
- Phalcon >= 3.0 https://github.com/phalcon/cphalcon/
Cassandra php驱动(https://github.com/datastax/php-driver)没有适当的版本号。可用的唯一版本号是C/C++驱动程序的版本(这并不是扩展本身的版本)。因此,这个库的版本跟随cassandra php-driver的实际版本。
如果您需要使用cassandra php-driver v1.2.2,请安装我们的库在1.2.2版本。对于其他可用的版本,遵循相同的逻辑。
通过Composer安装
在公共位置或您的项目中安装Composer
curl -s http://getcomposer.org/installer | php
创建composer.json文件如下所示
{ "require-dev": { "sachoo/phalcon-cassandra": "1.3.0" } }
运行composer安装程序
php composer.phar install
如何使用
首先,您必须向您的phalcon配置文件中添加并定义一些配置
return new \Phalcon\Config([ 'cassandra' => [ 'adapter' => 'Cassandra', 'hosts' => [ 'localhost'], 'keyspace' => 'lobs', 'consistency' => 'ONE', // Infos here \cassandra\ConsistencyLevel 'retryPolicies' => 'DefaultPolicy', ] ]);
然后,您必须在上面的依赖注入器中声明Cassandra服务
/** * This service returns a Cassandra database */ $di->setShared('dbCassandra', function () { $config = $this->getConfig(); $connection = new \Phalcon\Db\Adapter\Cassandra($config->cassandra->toArray()); return $connection; });
重要,如果您还在使用mysql,您必须在dbMysql
中将mysql服务的名称更改。例如
$di->setShared('dbMysql', function () { $config = $this->getConfig(); $params = [ 'host' => $config->mysql->host, 'port' => isset($config->mysql->port) ? $config->mysql->port : 3306, 'username' => $config->mysql->username, 'password' => $config->mysql->password, 'dbname' => $config->mysql->dbname, 'charset' => $config->mysql->charset ]; return new \Phalcon\Db\Adapter\Pdo\Mysql($params); });
然后,您只需在模型的@Source注解中声明正确的数据库服务即可。例如
<?php namespace Models\Cassandra; /** * Class Article * @package Models\Cassandra * * @Source('dbCassandra', 'article') */ class Article extends \Phalcon\Mvc\CassandraModel { /** * @Primary * @Column(type="uuid", nullable=false) */ public $uuid; /** * @Column(type="varchar", nullable=false) */ public $title; /** * @Column(type="varchar", nullable=false) */ public $description; /** * list<uuid> * uuid of linked articles * @Column(type="list", nullable=true) */ public $links; /** * @Column(type="float", nullable=true) */ public $lat; /** * @Column(type="float", nullable=true) */ public $lon; /** * @Column(type="int", nullable=true) */ public $radius; /** * @Column(type="varchar", nullable=false) */ public $status; /** * @Column(type="varchar", nullable=false) */ public $type; /** * @Column(type="varchar", nullable=false) */ public $language; }