_azureSelect = $select; } /** * SELECT clause (fields to be selected) * * Does nothing for Azure. * * @param string $select * @return Zend_Cloud_DocumentService_Adapter_WindowsAzure_Query */ public function select($select) { return $this; } /** * FROM clause (table name) * * @param string $from * @return Zend_Cloud_DocumentService_Adapter_WindowsAzure_Query */ public function from($from) { $this->_azureSelect->from($from); return $this; } /** * WHERE clause (conditions to be used) * * @param string $where * @param mixed $value Value or array of values to be inserted instead of ? * @param string $op Operation to use to join where clauses (AND/OR) * @return Zend_Cloud_DocumentService_Adapter_WindowsAzure_Query */ public function where($where, $value = null, $op = 'and') { if (!empty($value) && !is_array($value)) { // fix buglet in Azure - numeric values are quoted unless passed as an array $value = array($value); } $this->_azureSelect->where($where, $value, $op); return $this; } /** * WHERE clause for item ID * * This one should be used when fetching specific rows since some adapters * have special syntax for primary keys * * @param array $value Row ID for the document (PartitionKey, RowKey) * @return Zend_Cloud_DocumentService_Adapter_WindowsAzure_Query */ public function whereId($value) { if (!is_array($value)) { require_once 'Zend/Cloud/DocumentService/Exception.php'; throw new Zend_Cloud_DocumentService_Exception('Invalid document key'); } $this->_azureSelect->wherePartitionKey($value[0])->whereRowKey($value[1]); return $this; } /** * LIMIT clause (how many rows to return) * * @param int $limit * @return Zend_Cloud_DocumentService_Adapter_WindowsAzure_Query */ public function limit($limit) { $this->_azureSelect->top($limit); return $this; } /** * ORDER BY clause (sorting) * * @todo Azure service doesn't seem to support this yet; emulate? * @param string $sort Column to sort by * @param string $direction Direction - asc/desc * @return Zend_Cloud_DocumentService_Adapter_WindowsAzure_Query * @throws Zend_Cloud_OperationNotAvailableException */ public function order($sort, $direction = 'asc') { require_once 'Zend/Cloud/OperationNotAvailableException.php'; throw new Zend_Cloud_OperationNotAvailableException('No support for sorting for Azure yet'); } /** * Get Azure select query * * @return Zend_Service_WindowsAzure_Storage_TableEntityQuery */ public function getAzureSelect() { return $this->_azureSelect; } /** * Assemble query * * Simply return the WindowsAzure table entity query object * * @return Zend_Service_WindowsAzure_Storage_TableEntityQuery */ public function assemble() { return $this->getAzureSelect(); } }