Merge branch 'master' of https://git.mcnd.ca/mcndave/ulmus
This commit is contained in:
commit
8f9332fbad
8 files changed
+131
-36
No files matched your search
+12
-4
@@ -8,7 +8,7 @@ use Ulmus\Repository,
|
||||
Ulmus\Common\EntityField;
|
||||
|
||||
use Ulmus\Annotation\Classes\{ Method, Table, Collation, };
|
||||
use Ulmus\Annotation\Property\{ Field, Relation, OrderBy, Where, Join, Filter, On };
|
||||
use Ulmus\Annotation\Property\{ Field, Filter, Relation, OrderBy, Where, Join, Virtual, On, };
|
||||
use Ulmus\Annotation\Property\Field\{ Id, ForeignKey, CreatedAt, UpdatedAt, Datetime as DateTime, Date, Time, };
|
||||
|
||||
trait EntityTrait {
|
||||
@@ -67,11 +67,10 @@ trait EntityTrait {
|
||||
$filters = $entityResolver->searchFieldAnnotationList($name, new Filter() );
|
||||
|
||||
$baseEntity = $relation->entity ?? $relation->bridge ?? $entityResolver->properties[$name]['type'];
|
||||
|
||||
$repository = $baseEntity::repository()->open();
|
||||
|
||||
foreach ($where as $condition) {
|
||||
$repository->where($condition->field, is_callable($condition->value) ? call_user_func_array($condition->value, [$this]) : $condition->value, $condition->operator, $condition->condition);
|
||||
foreach($where as $condition) {
|
||||
$repository->where($condition->field, is_callable($condition->value) ? call_user_func_array($condition->value, [ $this ]) : $condition->value, $condition->operator, $condition->condition);
|
||||
}
|
||||
|
||||
$repository->close();
|
||||
@@ -79,6 +78,14 @@ trait EntityTrait {
|
||||
foreach ($order as $item) {
|
||||
$repository->orderBy($item->field, $item->order);
|
||||
}
|
||||
|
||||
$applyFilter = function($repository) use ($filters, $name) {
|
||||
foreach($filters as $filter) {
|
||||
$repository = call_user_func_array([ $this, $filter->method ], [ $repository, $name ]);
|
||||
}
|
||||
|
||||
return $repository;
|
||||
};
|
||||
|
||||
$field = $relation->key;
|
||||
|
||||
@@ -112,6 +119,7 @@ trait EntityTrait {
|
||||
if ($relation->foreignKey) {
|
||||
$repository->where( is_object($relation->foreignKey) ? $relation->foreignKey : $baseEntity::field($relation->foreignKey), is_callable($field) ? $field($this) : $this->$field );
|
||||
}
|
||||
|
||||
$this->eventExecute(Event\EntityRelationLoadInterface::class, $name, $repository);
|
||||
|
||||
return $this->$name = call_user_func([$applyFilter($repository), $relation->function]);
|
||||
|
||||
Reference in new issue
Block a user