Se agrega capacidad de seleccion segun orm

This commit is contained in:
2020-03-10 16:07:57 -03:00
parent 8a3aceecf4
commit 92745c62a8

View File

@ -29,12 +29,17 @@ class Model {
return $this;
}
protected $columns;
/**
* <column>, [<column1>, <column2>, ...]
* string | array(array)
* <column>: [<name>, *<alias>, *<type>]
*/
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;
}