public function order($order, $overwrite = false)
{
// [['field' => [...]], ['field2' => [...]]]
if (is_array($order) && is_numeric(key($order))) {
if ($overwrite) {
$this->_parts['order'] = $order;
return $this;
}
$this->_parts['order'] = array_merge($order, $this->_parts['order']);
return $this;
}
if (is_string($order)) {
$order = [$order => ['order' => 'desc']];
}
$normalizer = function ($order, $key) {
// ['field' => 'asc|desc']
if (is_string($order)) {
return [$key => ['order' => $order]];
}
return [$key => $order];
};
$order = collection($order)->map($normalizer)->toList();
if (!$overwrite) {
$order = array_merge($this->_parts['order'], $order);
}
$this->_parts['order'] = $order;
return $this;
}