Simple string queries
PHP Driver supports running string queries.
Background
- Given
- a running Cassandra cluster
- And
- the following schema:
CREATE KEYSPACE simplex WITH replication = { 'class': 'SimpleStrategy', 'replication_factor': 1 }; USE simplex; CREATE TABLE playlists ( id uuid, title text, album text, artist text, song_id uuid, PRIMARY KEY (id, title, album, artist) ); INSERT INTO playlists (id, song_id, artist, title, album) VALUES (62c36092-82a1-3a00-93d1-46196ee77204, 756716f7-2e54-4715-9f00-91dcbea6cf50, 'Joséphine Baker', 'La Petite Tonkinoise', 'Bye Bye Blackbird'); INSERT INTO playlists (id, song_id, artist, title, album) VALUES (62c36092-82a1-3a00-93d1-46196ee77204, f6071e72-48ec-4fcb-bf3e-379c8a696488, 'Willi Ostermann', 'Die Mösch', 'In Gold'); INSERT INTO playlists (id, song_id, artist, title, album) VALUES (62c36092-82a1-3a00-93d1-46196ee77204, fbdf82ed-0063-4796-9c7c-a3d4f47b4b25, 'Mick Jager', 'Memo From Turner', 'Performance');
A simple CQL string can be used to execute queries
- Given
- the following example:
<?php $cluster = Cassandra::cluster() ->withContactPoints('127.0.0.1') ->build(); $session = $cluster->connect("simplex"); $result = $session->execute("SELECT * FROM playlists"); foreach ($result as $row) { echo $row['artist'] . ": " . $row['title'] . " / " . $row['album'] . PHP_EOL; }
- When
- it is executed
- Then
- its output should contain:
Joséphine Baker: La Petite Tonkinoise / Bye Bye Blackbird
- And
- its output should contain:
Willi Ostermann: Die Mösch / In Gold
- And
- its output should contain:
Mick Jager: Memo From Turner / Performance
A simple CQL string can also be used to execute asynchronous queries
- Given
- the following example:
<?php $cluster = Cassandra::cluster() ->withContactPoints('127.0.0.1') ->build(); $session = $cluster->connect("simplex"); $future = $session->executeAsync("SELECT * FROM playlists"); echo "Doing something else..." . PHP_EOL; $result = $future->get(); foreach ($result as $row) { echo $row['artist'] . ": " . $row['title'] . " / " . $row['album'] . PHP_EOL; }
- When
- it is executed
- Then
- its output should contain:
Doing something else...
- And
- its output should contain:
Joséphine Baker: La Petite Tonkinoise / Bye Bye Blackbird
- And
- its output should contain:
Willi Ostermann: Die Mösch / In Gold
- And
- its output should contain:
Mick Jager: Memo From Turner / Performance
Simple CQL strings can also be used in batch statements
- Given
- the following example:
<?php $cluster = Cassandra::cluster() ->withContactPoints('127.0.0.1') ->build(); $session = $cluster->connect("simplex"); $future = $session->executeAsync("SELECT * FROM playlists"); $batch = new Cassandra\BatchStatement(Cassandra::BATCH_UNLOGGED); $batch->add("INSERT INTO playlists (id, song_id, artist, title, album) VALUES (3a55adfc-bbf6-43bd-9428-e714f109b977, 82a954c4-750a-4ada-8e02-6b15c9bf3140 , 'The Beatles', 'Come Together', 'Abbey Road')"); $batch->add("INSERT INTO playlists (id, song_id, artist, title, album) VALUES (3a55adfc-bbf6-43bd-9428-e714f109b977, 564e3c0d-bc3b-4d2d-8a34-679bb5247b71, 'Michael Jackson', 'Thriller', 'Thriller')"); $batch->add("INSERT INTO playlists (id, song_id, artist, title, album) VALUES (3a55adfc-bbf6-43bd-9428-e714f109b977, 326ead7f-4c54-43f4-9b1b-40f7ca84cd5e, 'Pink Floyd', 'Another Brick in the Wall (Part I)', 'The Wall')"); $session->execute($batch); $result = $session->execute("SELECT * FROM playlists"); foreach ($result as $row) { echo $row['artist'] . ": " . $row['title'] . " / " . $row['album'] . PHP_EOL; }
- When
- it is executed
- Then
- its output should contain:
The Beatles: Come Together / Abbey Road
- And
- its output should contain:
Michael Jackson: Thriller / Thriller
- And
- its output should contain:
Pink Floyd: Another Brick in the Wall (Part I) / The Wall