Se agrega capacidad de seleccion segun orm
This commit is contained in:
@ -29,12 +29,17 @@ class Model {
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
protected $columns;
|
protected $columns;
|
||||||
|
/**
|
||||||
|
* <column>, [<column1>, <column2>, ...]
|
||||||
|
* string | array(array)
|
||||||
|
* <column>: [<name>, *<alias>, *<type>]
|
||||||
|
*/
|
||||||
public function select($columns): Model {
|
public function select($columns): Model {
|
||||||
if ($this->columns == null) {
|
if ($this->columns == null) {
|
||||||
$this->columns = [];
|
$this->columns = [];
|
||||||
}
|
}
|
||||||
if (!is_array($columns)) {
|
if (!is_array($columns)) {
|
||||||
$columns = [$columns];
|
$columns = [[$columns]];
|
||||||
}
|
}
|
||||||
$this->columns = array_merge($this->columns, $columns);
|
$this->columns = array_merge($this->columns, $columns);
|
||||||
return $this;
|
return $this;
|
||||||
@ -43,12 +48,21 @@ class Model {
|
|||||||
if ($this->columns == null or count($this->columns) == 0) {
|
if ($this->columns == null or count($this->columns) == 0) {
|
||||||
return $orm;
|
return $orm;
|
||||||
}
|
}
|
||||||
foreach ($this->columns as $column => $alias) {
|
foreach ($this->columns as $column) {
|
||||||
if (is_numeric($column)) {
|
if (is_string($column)) {
|
||||||
$orm = $orm->select($alias);
|
$column = [$column];
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
$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;
|
return $orm;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user