- Some small bugfixes done
This commit is contained in:
parent
fa8adcace1
commit
58bdce0ea8
|
@ -6,7 +6,7 @@
|
|||
"authors": [
|
||||
{
|
||||
"name": "Dave Mc Nicoll",
|
||||
"email": "mcndave@gmail.com"
|
||||
"email": "info@mcnd.ca"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
|
|
|
@ -193,5 +193,8 @@ class SQLite implements AdapterInterface {
|
|||
|
||||
return (int) in_array($string, explode(',', $string_list));
|
||||
}, 2);
|
||||
$pdo->sqliteCreateFunction('day', fn($date) => ( new \DateTime($date) )->format('d'), 1);
|
||||
$pdo->sqliteCreateFunction('month', fn($date) => ( new \DateTime($date) )->format('m'), 1);
|
||||
$pdo->sqliteCreateFunction('year', fn($date) => ( new \DateTime($date) )->format('Y'), 1);
|
||||
}
|
||||
}
|
|
@ -56,7 +56,7 @@ class EntityField implements WhereRawParameter
|
|||
$definition = new FieldDefinition($adapter, $field);
|
||||
|
||||
return implode(" ", [
|
||||
$definition->getSqlName(),
|
||||
$adapter->escapeIdentifier($definition->getSqlName(), AdapterInterface::IDENTIFIER_FIELD),
|
||||
$definition->getSqlType(),
|
||||
$definition->getSqlParams(),
|
||||
]);
|
||||
|
|
|
@ -49,6 +49,11 @@ class EntityCollection extends \ArrayObject {
|
|||
return $this->filtersCollection($callback, true, false)->toArray();
|
||||
}
|
||||
|
||||
public function filtersCount(Callable $callback) : array
|
||||
{
|
||||
return $this->filtersCollection($callback, true, false)->count();
|
||||
}
|
||||
|
||||
public function filtersOne(Callable $callback) : ? object
|
||||
{
|
||||
foreach($this->filters($callback, true) as $item) {
|
||||
|
@ -209,7 +214,7 @@ class EntityCollection extends \ArrayObject {
|
|||
return $list;
|
||||
}
|
||||
|
||||
public function unique(/*stringable|callable */ $field, bool $strict = false) : self
|
||||
public function unique(\Stringable|callable $field, bool $strict = false) : self
|
||||
{
|
||||
$list = [];
|
||||
$obj = new static();
|
||||
|
@ -390,14 +395,16 @@ class EntityCollection extends \ArrayObject {
|
|||
return $this;
|
||||
}
|
||||
|
||||
public function sort(callable $callback, $function = "uasort") : self
|
||||
public function sort(null|callable $callback = null, $function = "uasort") : self
|
||||
{
|
||||
$callback ??= fn($e1, $e2) => $e1 <=> $e2;
|
||||
|
||||
call_user_func_array([ $this, $function ], [ $callback ]);
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function rsort(callable $callback, $function = "uasort") : self
|
||||
public function rsort(null|callable $callback = null, $function = "uasort") : self
|
||||
{
|
||||
return $this->sort(...func_get_args())->reverse();
|
||||
}
|
||||
|
|
|
@ -22,16 +22,18 @@ class Repository
|
|||
|
||||
public ? ConnectionAdapter $adapter;
|
||||
|
||||
protected Query\QueryBuilderInterface $queryBuilder;
|
||||
|
||||
protected EntityResolver $entityResolver;
|
||||
|
||||
public string $alias;
|
||||
|
||||
public string $entityClass;
|
||||
|
||||
public array $events = [];
|
||||
|
||||
protected Query\QueryBuilderInterface $queryBuilder;
|
||||
|
||||
protected EntityResolver $entityResolver;
|
||||
|
||||
protected array $joined = [];
|
||||
|
||||
public function __construct(string $entity, string $alias = self::DEFAULT_ALIAS, ConnectionAdapter $adapter = null) {
|
||||
$this->entityClass = $entity;
|
||||
$this->alias = $alias;
|
||||
|
@ -592,6 +594,13 @@ class Repository
|
|||
|
||||
# @TODO Apply FILTER annotation to this too !
|
||||
foreach(array_filter((array) $fields) as $item) {
|
||||
if ( isset($this->joined[$item]) ) {
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
$this->joined[$item] = true;
|
||||
}
|
||||
|
||||
$annotation = $this->entityResolver->searchFieldAnnotation($item, [ Attribute\Property\Join::class, Join::class ]) ?:
|
||||
$this->entityResolver->searchFieldAnnotation($item, [ Attribute\Property\Relation::class, Relation::class ]);
|
||||
|
||||
|
|
Loading…
Reference in New Issue