|
|
@@ -298,9 +298,16 @@ class AclQueryFeatures {
|
|
|
} else if ('primaryKey' === $k) {
|
|
|
$fieldName = $this->_acl->getPrimaryKeyField();
|
|
|
$fieldType = $this->_acl->getXsdFieldType($fieldName);
|
|
|
- list($comparisonSign, $value) = $this->parseQueryValue($fieldName, $v, $fieldType);
|
|
|
- DBG::log([ $fieldName, $comparisonSign, $value, $fieldType ], 'array', "parseQueryValue");
|
|
|
- $this->_query->where([$fieldName, $comparisonSign, $value]);
|
|
|
+ if (is_array($v)) {
|
|
|
+ DBG::log([ $fieldName, $v, $fieldType ], 'array', "parseQueryValue :: primaryKey, value is array");
|
|
|
+ $this->_query->where([ $fieldName, 'or', array_map(function ($pk) use ($fieldName) {
|
|
|
+ return [ $fieldName, '=', $pk ];
|
|
|
+ }, $v) ]);
|
|
|
+ } else {
|
|
|
+ list($comparisonSign, $value) = $this->parseQueryValue($fieldName, $v, $fieldType);
|
|
|
+ DBG::log([ $fieldName, $comparisonSign, $value, $fieldType ], 'array', "parseQueryValue");
|
|
|
+ $this->_query->where([$fieldName, $comparisonSign, $value]);
|
|
|
+ }
|
|
|
} else if ('__backRef' === $k) { // skip - parse below
|
|
|
} else if ('__childRef' === $k) { // skip - parse below
|
|
|
} else if ('limit' === $k) {
|