/** * @test */ public function fetchMultipleDocumentsWorks() { $data = json_encode(array('name' => 'Foo')); $this->connector->put('/flow3_test/abc', array(), $data); $data = json_encode(array('name' => 'Bar')); $this->connector->put('/flow3_test/def', array(), $data); $data = json_encode(array('name' => 'Baz')); $this->connector->put('/flow3_test/ghi', array(), $data); $data = json_encode(array('keys' => array('abc', 'ghi'))); $response = $this->connector->post('/flow3_test/_all_docs', array('include_docs' => TRUE), $data); $this->assertObjectHasAttribute('rows', $response); $this->assertEquals(2, count($response->rows)); $row = $response->rows[1]; $this->assertEquals('Baz', $row->doc->name); $this->assertEquals(3, $response->total_rows); }
/** * Query a view * * In addition to the default view query options (key, startkey, endkey, ...) * the query parameter "keys" can be specified to do multi-key lookups. * * @param string $designDocumentName The design document name * @param string $viewName The view name * @param array $queryOptions Query options * @return mixed * @author Christopher Hlubek <*****@*****.**> */ public function queryView($designDocumentName, $viewName, array $queryOptions = NULL) { $requestOptions = $this->extractRequestOptions($queryOptions); $path = '/' . urlencode($this->getDatabaseName()) . '/_design/' . urlencode($designDocumentName) . '/_view/' . urlencode($viewName); if ($this->logSlowQueries) { $startTime = microtime(TRUE); } if ($queryOptions === NULL || !isset($queryOptions['keys'])) { $result = $this->connector->get($path, $queryOptions, NULL, $requestOptions); } else { $keys = $queryOptions['keys']; unset($queryOptions['keys']); $result = $this->connector->post($path, $queryOptions, json_encode(array('keys' => $keys)), $requestOptions); } if ($this->logSlowQueries) { $endTime = microtime(TRUE); $totalTime = $endTime - $startTime; if ($totalTime > $this->slowQueryThreshold) { $this->queryLogger->log('Slow query for view: ' . $viewName, LOG_WARNING, array('time' => $totalTime, 'path' => $path, 'queryOptions' => $queryOptions, 'requestOptions' => $requestOptions)); } } return $result; }