php中的datastax cassandra查询结果解码

php中的datastax cassandra查询结果解码,cassandra,datastax,cqlsh,Cassandra,Datastax,Cqlsh,我正在使用Cassandra和Datastax PHP CQL 给定以下查询,我应该如何解码结果 $cql = SELECT * FROM company WHERE userid = 1001 ORDER BY gpsTime DESC LIMIT 1; $statement = new Cassandra\SimpleStatement($cql); $result = $this->session->execute($st

我正在使用Cassandra和Datastax PHP CQL

给定以下查询,我应该如何解码结果

$cql = SELECT * FROM  company WHERE userid = 1001 ORDER BY gpsTime DESC LIMIT 1;                           
$statement = new Cassandra\SimpleStatement($cql);
$result = $this->session->execute($statement);
我试着解码:

foreach($result as $row){
    // Get values from row and add to array
    array_push($allVehicleInfo,array(
        'userID'    => $row['userid']->value,
        'gpsTime'   => $row['gpstime']->seconds,
         'latitude' => $row['latitude']->value )
    );
}
foreach($result as $row){
    // Get values from row and add to array
    array_push($allVehicleInfo,array(
        'userID'    => $row['userid']->value(),
        'gpsTime'   => $row['gpstime']->seconds,
         'latitude' => $row['latitude']->value() )
    );
}
但是,我得到一个错误:

消息:未定义的属性:Cassandra\Decimal::$value


我的表架构是:

$cql = "CREATE TABLE " company " (
    userID bigint,
    userName ascii,
    latitude decimal,
    longitude decimal,
    accuracy float,
    altitude float,
    gpsTime timestamp );

value
是一个函数而不是属性,因此您必须执行
$row['latitude']->value()

正如Alex所说,在您的示例中,
value
不是属性。相反,请检查您试图解码的类的文档

如果不确定处理的是哪个类,可以使用内置函数
get_class()
-

一旦知道要处理什么类,就可以查看DataStax PHP驱动程序文档,查看需要调用哪个函数来检索正确的值

例如,如果处理的是
Cassandra\Timestamp
类,则必须调用
time()
函数以
int
形式检索时间

在您的例子中,您可能正在处理一个
Float
,因此请检查并查看是否需要调用函数
value()
,以检索
Cassandra\Float
实例的
Float


代码解决方案: