sachoo/phalcon-cassandra

Phalcon的Cassandra库

1.3.2 2018-02-21 12:51 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:47:41 UTC


README

status

需求

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;
}