protected prepareProjection ( array $fields ) : array | ||
$fields | array | Fields to project. |
return | array |
protected function prepareProjection(array $fields)
{
$projection = [];
foreach ($fields as $key => $value) {
if (is_string($key)) {
if (is_bool($value)) {
$projection[$key] = $value;
continue;
}
if (is_int($value)) {
$projection[$key] = $value >= 1;
continue;
}
}
if (is_int($key) && is_string($value)) {
$key = $value;
if (strpos($value, '-') === 0) {
$key = substr($key, 1);
$value = false;
} else {
$value = true;
}
$projection[$key] = $value;
continue;
}
throw new InvalidArgumentException(sprintf("Invalid projection: '%s' => '%s'", $key, $value));
}
return $projection;
}