-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathSortable.php
More file actions
37 lines (28 loc) · 1.05 KB
/
Sortable.php
File metadata and controls
37 lines (28 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
namespace UniMapper\Query;
use UniMapper\Entity\Reflection\Property\Option\Map;
use UniMapper\Exception;
trait Sortable
{
protected $orderBy = [];
public function orderBy($name, $direction = Select::ASC)
{
if (!$this->reflection->hasProperty($name)) {
throw new Exception\QueryException(
"Invalid property name '" . $name . "'!"
);
}
$direction = strtolower($direction);
if ($direction !== Select::ASC && $direction !== Select::DESC) {
throw new Exception\QueryException("Order direction must be '" . Select::ASC . "' or '" . Select::DESC . "'!");
}
$property = $this->reflection->getProperty($name);
if ($property->hasOption(Map::KEY) && !$property->getOption(Map::KEY)) {
throw new Exception\QueryException(
"Order can not be used on properties with disabled mapping!"
);
}
$this->orderBy[$this->reflection->getProperty($name)->getUnmapped()] = $direction;
return $this;
}
}