- Still WIP on Api's wrapper
This commit is contained in:
parent
1927b43999
commit
8e0dce3e71
|
@ -68,7 +68,7 @@ abstract class Sql {
|
|||
return static::identifier($sql);
|
||||
}
|
||||
|
||||
public static function escape($value)
|
||||
public static function escape($value) : mixed
|
||||
{
|
||||
switch(true) {
|
||||
case is_object($value):
|
||||
|
|
|
@ -346,6 +346,18 @@ class EntityCollection extends \ArrayObject implements \JsonSerializable {
|
|||
return ( new $className() )->fromArray($dataset);
|
||||
}
|
||||
|
||||
public function arrayToEntities(array $list, ? string /*stringable*/ $entityClass = null) : self
|
||||
{
|
||||
$collection = new static();
|
||||
$collection->entityClass = $entityClass ?? $this->entityClass;
|
||||
|
||||
foreach($list as $dataset) {
|
||||
$collection->append($this->arrayToEntity($dataset, $entityClass));
|
||||
}
|
||||
|
||||
return $collection;
|
||||
}
|
||||
|
||||
public function jsonSerialize(): mixed
|
||||
{
|
||||
return $this->toArray();
|
||||
|
|
|
@ -16,7 +16,7 @@ class OrderBy extends Fragment {
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function add(string $field, ? string $direction = null) : self
|
||||
public function add(object|string $field, ? string $direction = null) : self
|
||||
{
|
||||
$this->validateFieldType($field);
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
namespace Ulmus\Query;
|
||||
|
||||
use Ulmus\Query;
|
||||
|
||||
interface QueryBuilderInterface
|
||||
{
|
||||
public function push(Fragment $queryFragment) : self;
|
||||
|
@ -9,5 +11,5 @@ interface QueryBuilderInterface
|
|||
public function render(bool $skipToken = false) /* mixed */;
|
||||
public function reset() : void;
|
||||
public function getFragment(string $class, int $index = 0) : ? Fragment;
|
||||
public function removeFragment(Fragment $fragment) : void;
|
||||
public function removeFragment(Query\Fragment|array|\Stringable|string $fragment) : void;
|
||||
}
|
|
@ -278,7 +278,7 @@ class QueryBuilder implements Query\QueryBuilderInterface
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function groupBy(string|\Stringable $field, ? string $direction = null) : self
|
||||
public function groupBy(string|object $field, ? string $direction = null) : self
|
||||
{
|
||||
if ( null === $groupBy = $this->getFragment(Query\GroupBy::class) ) {
|
||||
$groupBy = new Query\GroupBy();
|
||||
|
|
|
@ -532,7 +532,7 @@ class Repository
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function orderBy(string|\Stringable $field, ? string $direction = null) : self
|
||||
public function orderBy(string|object $field, ? string $direction = null) : self
|
||||
{
|
||||
$this->queryBuilder->orderBy($field, $direction);
|
||||
|
||||
|
@ -550,8 +550,14 @@ class Repository
|
|||
public function orders(array $orderList) : self
|
||||
{
|
||||
foreach($orderList as $field => $direction) {
|
||||
if (is_numeric($field)) {
|
||||
$this->orderBy($direction);
|
||||
}
|
||||
else {
|
||||
# Associative array with direction
|
||||
$this->orderBy($field, $direction);
|
||||
}
|
||||
}
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue