Thank you @ingenthr for the follow up.
I understand that there is a release schedule/plan. My only complaint was that n1ql is such a major feature in Couchbase 4 and It is a little bit let down that I can’t even use n1ql correctly with PHP SDK that was released months ago just because there was no test for the SDK to check a mistake.
I decided to hack around it. I think I’m good for now. Below is the new query method I’m using.
private function query($queryObj, array $params, $json_asarray = false)
{
$m = $this->bucket->manager();
$manager = new \ReflectionClass($m);
$property = $manager->getProperty('_me');
$property->setAccessible(true);
$me = $property->getValue($m);
$data = $queryObj->options;
if (is_array($params)) {
foreach ($params as $key => $value) {
$data['$'.$key] = $value;
}
}
$dataStr = json_encode($data, true);
$dataOut = $me->n1ql_request($dataStr, $queryObj->adhoc);
$meta = json_decode($dataOut['meta'], true);
if (isset($meta['errors']) && count($meta['errors']) > 0) {
$err = $meta['errors'][0];
$ex = new \CouchbaseException($err['msg']);
$ex->qCode = $err['code'];
throw $ex;
}
$rows = array();
foreach ($dataOut['results'] as $row) {
$rows[] = json_decode($row, $json_asarray);
}
return $rows;
}