public function testStoresAndFetchesStandardColumns() { $this->cassandra->set('user.foobar', array('email' => '*****@*****.**', 'name' => 'John Smith', 'age' => 23)); $this->cassandra->set('user.' . 'foo.bar', array('email' => '*****@*****.**', 'name' => 'Jane Doe', 'age' => 18)); $this->cassandra->set('user.' . 'foo.bar', array('email' => '*****@*****.**', 'name' => 'Jane Doe', 'age' => 18)); $this->assertEquals(array('email' => '*****@*****.**', 'name' => 'John Smith', 'age' => 23), $this->cassandra->get('user.foobar')); $this->assertEquals(array('email' => '*****@*****.**', 'name' => 'Jane Doe', 'age' => 18), $this->cassandra->get('user.' . Cassandra::escape('foo.bar'))); $this->assertEquals(array('email' => '*****@*****.**'), $this->cassandra->get('user.foobar:email')); $this->assertEquals(array('email' => '*****@*****.**', 'age' => 23), $this->cassandra->get('user.foobar:email,age')); $this->assertEquals(array('email' => '*****@*****.**', 'age' => 23), $this->cassandra->get('user.foobar:email, age')); $this->assertEquals(array('email' => '*****@*****.**', 'name' => 'John Smith', 'age' => 23), $this->cassandra->get('user.foobar:age-name')); $this->assertEquals(array('email' => '*****@*****.**', 'name' => 'John Smith', 'age' => 23), $this->cassandra->get('user.foobar:a-o')); $this->assertEquals(array('email' => '*****@*****.**', 'age' => 23), $this->cassandra->get('user.foobar:a-f')); $this->assertEquals(array('email' => '*****@*****.**', 'age' => 23), $this->cassandra->get('user.foobar:a-z|2')); $this->assertEquals(array('age' => 23, 'email' => '*****@*****.**'), $this->cassandra->get('user.foobar|2')); $this->assertEquals(array('name' => 'John Smith', 'email' => '*****@*****.**'), $this->cassandra->get('user.foobar:z-a|2R')); $this->assertEquals(array('name' => 'John Smith', 'email' => '*****@*****.**'), $this->cassandra->get('user.foobar|2R')); }
// access column family, using the singleton syntax // there is shorter "cf" methid that is an alias to "columnFamily" $userColumnFamily = Cassandra::getInstance()->columnFamily('user'); echo 'Column family "user": <pre>' . print_r($userColumnFamily, true) . '</pre><hr/>'; // lets insert some test data using the convinience method "set" of Cassandra // the syntax is COLUMN_FAMILY_NAME.KEY_NAME $cassandra->set('user.john', array('email' => '*****@*****.**', 'name' => 'John Smith', 'age' => 34)); // when inserting data, it's ok if key name contains ".", no need to escape them $cassandra->set('user.jane.doe', array('email' => '*****@*****.**', 'name' => 'Jane Doe', 'age' => 24)); // longer way of inserting data, first getting the column family $cassandra->cf('user')->set('chuck', array('email' => '*****@*****.**', 'name' => 'Chuck Norris', 'age' => 24), Cassandra::CONSISTENCY_QUORUM); // lets fetch all the information about user john $john = $cassandra->get('user.john'); echo 'User "john": <pre>' . print_r($john, true) . '</pre><hr/>'; // since the jane key "jane.doe" includes a ".", we have to escape it $jane = $cassandra->get('user.' . Cassandra::escape('jane.doe')); echo 'User "jane.doe": <pre>' . print_r($jane, true) . '</pre><hr/>'; // there is some syntatic sugar on the query of Cassandra::get() allowing you // to fetch specific columns, ranges of them, limit amount etc. for example, // lets only fetch columns name and age $chuck = $cassandra->get('user.chuck:name,age'); echo 'User "chuck", name and age: <pre>' . print_r($chuck, true) . '</pre><hr/>'; // fetch all solumns from age to name (gets all columns in-between too) $chuck2 = $cassandra->get('user.chuck:age-name'); echo 'User "chuck", columns ago to name: <pre>' . print_r($chuck2, true) . '</pre><hr/>'; // the range columns do not need to exist, we can get character ranges $chuck3 = $cassandra->get('user.chuck:a-z'); echo 'User "chuck", columns a-z: <pre>' . print_r($chuck3, true) . '</pre><hr/>'; // when performing range queries, we can also limit the number of columns // returned (2); also the method accepts consistency level as second parameter $chuck4 = $cassandra->get('user.chuck:a-z|2', Cassandra::CONSISTENCY_ALL);