ulmus/src/Query/OrderBy.php
2023-10-27 18:33:48 -04:00

42 lines
859 B
PHP

<?php
namespace Ulmus\Query;
class OrderBy extends Fragment {
public int $order = 85;
public array $orderBy = [];
const SQL_TOKEN = "ORDER BY";
public function set(array $order) : self
{
$this->orderBy = $order;
return $this;
}
public function add(object|string $field, ? string $direction = null) : self
{
$this->validateFieldType($field);
$this->orderBy[] = [ $field, $direction ];
return $this;
}
public function render() : string
{
$list = array_map(function($item) {
list($field, $direction) = $item;
return $field . ( $direction ? " $direction" : "" );
}, $this->orderBy);
return $this->renderSegments([
static::SQL_TOKEN, implode(", ", $list)
]);
}
}