From 8a3aceecf4ad9bc87b286648736fb63deb16952f Mon Sep 17 00:00:00 2001 From: Aldarien Date: Tue, 10 Mar 2020 13:48:02 -0300 Subject: [PATCH 1/2] FIX: Sub arrays --- common/Factory/Model.php | 4 ++-- src/RelationNode.php | 2 +- src/Relationship.php | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/common/Factory/Model.php b/common/Factory/Model.php index 2df405f..58a4d38 100644 --- a/common/Factory/Model.php +++ b/common/Factory/Model.php @@ -1,13 +1,13 @@ container = $container; } diff --git a/src/RelationNode.php b/src/RelationNode.php index 293d27f..6dff5b6 100644 --- a/src/RelationNode.php +++ b/src/RelationNode.php @@ -48,7 +48,7 @@ class RelationNode { $source = implode('.', [$this->source->table, $this->source->key]); $destination = implode('.', [$this->destination->table, $this->destination->key]); $method = str_replace([' '], ['_'], strtolower($this->join)); - $output = $factory->{$method}([$this->destination->table, [$destination, $source, $this->relation]]); + $output = $factory->{$method}([[$this->destination->table, $destination, $source, $this->relation]]); return $output; } } diff --git a/src/Relationship.php b/src/Relationship.php index 5047884..e7c3cd1 100644 --- a/src/Relationship.php +++ b/src/Relationship.php @@ -46,13 +46,13 @@ class Relationship { return $this; } public function build(): ModelFactory { - $output = $factory->find($this->start->class); + $output = $this->factory->find($this->start->class); foreach ($this->nodes as $node) { $output = $node->build($output); } $output = $output->where([ - implode('.', [$this->condition->table, $this->condition->key]), - $this->condition->value + [implode('.', [$this->condition->table, $this->condition->key]), + $this->condition->value] ]); return $output; } From 92745c62a87a00b33c08a1b68fbea0c77f4962cd Mon Sep 17 00:00:00 2001 From: Aldarien Date: Tue, 10 Mar 2020 16:07:57 -0300 Subject: [PATCH 2/2] Se agrega capacidad de seleccion segun orm --- common/Factory/Model.php | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/common/Factory/Model.php b/common/Factory/Model.php index 58a4d38..f0c819b 100644 --- a/common/Factory/Model.php +++ b/common/Factory/Model.php @@ -29,12 +29,17 @@ class Model { return $this; } protected $columns; + /** + * , [, , ...] + * string | array(array) + * : [, *, *] + */ public function select($columns): Model { if ($this->columns == null) { $this->columns = []; } if (!is_array($columns)) { - $columns = [$columns]; + $columns = [[$columns]]; } $this->columns = array_merge($this->columns, $columns); return $this; @@ -43,12 +48,21 @@ class Model { if ($this->columns == null or count($this->columns) == 0) { return $orm; } - foreach ($this->columns as $column => $alias) { - if (is_numeric($column)) { - $orm = $orm->select($alias); - continue; + foreach ($this->columns as $column) { + if (is_string($column)) { + $column = [$column]; } - $orm = $orm->select($column, $alias); + $alias = $column['alias'] ?? $column[1] ?? $column[0]; + $method = 'select'; + if (count($column) > 2 or isset($column['type'])) { + $type = $column['type'] ?? $column[2] ?? ''; + switch ($type) { + case 'expr': + $method .= 'Expr'; + break; + } + } + $orm = $orm->{$method}($column, $alias); } return $orm; }