将日期时间插入Cassandra(通过DataStax PHP驱动程序)

时间:2016-06-06 16:49:03

标签: php cassandra datastax

我有一张桌子:

CREATE TABLE agency (
  documentCode ASCII,
  sectionCode ASCII,
  checkedAt TIMESTAMP,

  PRIMARY KEY (franchisedCode, agencyCode)
)
;

如果需要,我可以更改数据库的结构。

我会设置一个时间戳:

$cassandra = $cluster->connect($keyspace);
$statement = $cassandra->prepare('
  INSERT INTO agency 
  ( documentCode
  , sectionCode
  , checkedAt
  ) VALUES 
  ( :documentCode
  , :sectionCode
  , :checkedAt
  );
');

$arguments = [
    'documentCode'   => $code1,
    'sectionCode'    => $code2,
    'checkedAt'      => $mixed,
];

var_dump($arguments);

$options = new ExecutionOptions([
    'arguments' => $arguments,
]);

$cassandra->execute($statement, $options);

我测试了$mixed的一些值:

  • null正常工作
  • 123456789失败,即使我转向intstring
  • '2016-06-06T12:34:56+00:00'失败
  • '2016-06-06T12:34:56'失败
  • '2016-06-06'失败

错误讯息为Fatal error: Uncaught Cassandra\Exception\InvalidArgumentException: Invalid value type

你能看到什么问题吗? 感谢

1 个答案:

答案 0 :(得分:1)

好吧,我解决了我的问题。 我必须使用对象类型: $checkedAt = new \Cassandra\Timestamp($checkedAt);