Implementing idpolices resolve #5
This commit is contained in:
Executable → Regular
+1
@@ -1,2 +1,3 @@
|
||||
/netbeans
|
||||
/.idea
|
||||
/nbproject
|
||||
+38
-3
@@ -14,12 +14,18 @@ abstract class Entity {
|
||||
'connectionName',
|
||||
'timestamps',
|
||||
'softdelete',
|
||||
'tableName'
|
||||
'tableName',
|
||||
'_idPolice'
|
||||
);
|
||||
|
||||
const _properties = Array();
|
||||
|
||||
|
||||
/*
|
||||
* [type] = nextval| manual | empty is the default
|
||||
* [max] = maximum value allowed
|
||||
* [min] = minumul value allowed
|
||||
* [step] = increment by n each id
|
||||
*/
|
||||
const _idPolice = Array();
|
||||
|
||||
function __construct() {
|
||||
if (isset($this->timestamps) && $this->timestamps) {
|
||||
@@ -64,6 +70,12 @@ abstract class Entity {
|
||||
}
|
||||
|
||||
private function update() {
|
||||
//First check if the record exist. If not, we might have a idPolice
|
||||
if (!DBInstance::queryOne("SELECT id FROM {" . static::tableName . "} WHERE id = ?", Array($this->id))) {
|
||||
$this->create();
|
||||
return;
|
||||
}
|
||||
|
||||
$updatekeys = static::_ignore;
|
||||
$updatekeys[] = 'id';
|
||||
$columns = array_diff(array_keys(get_object_vars($this)), $updatekeys);
|
||||
@@ -85,6 +97,26 @@ abstract class Entity {
|
||||
}
|
||||
|
||||
private function create() {
|
||||
|
||||
|
||||
if (!empty(static::_idPolice) && static::_idPolice['type'] != 'manual') {
|
||||
$maxVal = DBInstance::queryOne("SELECT max(id) as id FROM {" . static::tableName . "}");
|
||||
$maxVal = ($maxVal) ? $maxVal : 0;
|
||||
|
||||
if (isset(static::_idPolice['min']) && static::_idPolice['min'] > $maxVal->id) {
|
||||
$this->id = static::_idPolice['min'];
|
||||
} else {
|
||||
if (isset(static::_idPolice['step'])) {
|
||||
$this->id = $maxVal->id + static::_idPolice['step'];
|
||||
} else {
|
||||
$this->id = $maxVal->id + 1;
|
||||
}
|
||||
}
|
||||
if (isset(static::_idPolice['max']) && $maxVal->id > static::_idPolice['max']) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
var_dump($this);
|
||||
$columns = array_diff(array_keys(get_object_vars($this)), static::_ignore);
|
||||
$obj = (array) $this;
|
||||
|
||||
@@ -103,9 +135,12 @@ abstract class Entity {
|
||||
$second_argument = rtrim($second_argument, ', ');
|
||||
|
||||
$sql = "INSERT INTO {" . static::tableName . "} ($first_argument) VALUES ($second_argument)";
|
||||
|
||||
DBInstance::execute($sql, $insert_data, static::connectionName);
|
||||
if ( empty(static::_idPolice) ){
|
||||
$this->id = DBInstance::lastInsert();
|
||||
}
|
||||
}
|
||||
|
||||
public function delete() {
|
||||
if (isset($this->softdelete) && $this->softdelete) {
|
||||
|
||||
+16
-1
@@ -28,6 +28,16 @@ class Estado extends Entity {
|
||||
|
||||
}
|
||||
|
||||
class Estado_ extends Entity {
|
||||
|
||||
const tableName = 'estado_novo';
|
||||
const _idPolice = Array(
|
||||
'type' => 'nextval',
|
||||
'min' => 500/*,
|
||||
'step' => 10*/);
|
||||
}
|
||||
|
||||
|
||||
class Municipio extends Entity {
|
||||
|
||||
const tableName = 'basico_geografico_municipios';
|
||||
@@ -110,4 +120,9 @@ Connections::addConnection($conn);
|
||||
//$a->load(1);
|
||||
//$a->estado();
|
||||
|
||||
var_dump( DBInstance::queryOne('SELECT * FROM {estado}'));
|
||||
//var_dump( DBInstance::queryOne('SELECT max(id) as id FROM {estado}'));
|
||||
|
||||
$a = new Estado_();
|
||||
$a->nome = 'Estado 1';
|
||||
$a->save();
|
||||
var_dump($a);
|
||||
Reference in New Issue
Block a user