diff --git a/src/ORM/DBInstance.php b/src/ORM/DBInstance.php index 11d92b4..53abf22 100755 --- a/src/ORM/DBInstance.php +++ b/src/ORM/DBInstance.php @@ -4,7 +4,13 @@ namespace ORM; class DBInstance { + private static function addPrefix($sql, $instance = 'default'){ + $con = Connections::getConnection($instance); + return preg_replace('/{(.*)}/', "$con->prefix$1", $sql); + } + public static function execute($sql, $data = null, $instance = 'default') { + $sql = self::addPrefix($sql, $instance); if ($data) { self::queryPrepare($sql, $data, $instance); } else { @@ -19,6 +25,7 @@ class DBInstance { } public static function query($sql, $data = null, $instance = 'default') { + $sql = self::addPrefix($sql, $instance); if ($data) { return self::queryPrepare($sql, $data, $instance); } else { @@ -28,6 +35,7 @@ class DBInstance { } public static function queryOne($sql, $data = null, $instance = 'default') { + $sql = self::addPrefix($sql, $instance); if ($data) { return self::queryPrepare($sql, $data, $instance); } else { @@ -37,6 +45,7 @@ class DBInstance { } public static function queryPrepare($sql, $data = Array(), $instance = 'default') { + $sql = self::addPrefix($sql, $instance); $con = Connections::getConnection($instance); $statement = $con->prepare($sql); $statement->execute($data); diff --git a/src/ORM/Entity.php b/src/ORM/Entity.php index 396b5ad..95ef195 100755 --- a/src/ORM/Entity.php +++ b/src/ORM/Entity.php @@ -4,17 +4,17 @@ namespace ORM; abstract class Entity { - const table_name = ''; - const connection_name = 'default'; + const tableName = ''; + const connectionName = 'default'; const softdelete = false; const _ignore = Array( 'classname', '_properties', '_ignore', - 'connection_name', + 'connectionName', 'timestamps', 'softdelete', - 'table_name' + 'tableName' ); const _properties = Array(); @@ -80,7 +80,7 @@ abstract class Entity { $update_string = rtrim($update_string, ', '); - $sql = "UPDATE " . static::tableName . " SET $update_string WHERE id = :_update_id"; + $sql = "UPDATE {" . static::tableName . "} SET $update_string WHERE id = :_update_id"; DBInstance::execute($sql, $update_data, static::connectionName); } @@ -102,7 +102,7 @@ abstract class Entity { $first_argument = rtrim($first_argument, ', '); $second_argument = rtrim($second_argument, ', '); - $sql = "INSERT INTO " . static::tableName . " ($first_argument) VALUES ($second_argument)"; + $sql = "INSERT INTO {" . static::tableName . "} ($first_argument) VALUES ($second_argument)"; DBInstance::execute($sql, $insert_data, static::connectionName); $this->id = DBInstance::lastInsert(); } @@ -121,13 +121,13 @@ abstract class Entity { return; } - $sql = "SELECT * FROM " . static::tableName . " WHERE id = ?"; + $sql = "SELECT * FROM {" . static::tableName . "} WHERE id = ?"; $this->fill(DBInstance::queryPrepare($sql, Array($id), static::connectionName)[0]); } public function purge() { - $sql = "DELETE FROM " . static::tableName . " WHERE id = :id"; + $sql = "DELETE FROM {" . static::tableName . "} WHERE id = :id"; DBInstance::execute($sql, Array('id' => $this->id), static::connectionName); } @@ -164,9 +164,9 @@ abstract class Entity { } if (static::softdelete && !$trashed) { - $sql = "SELECT $criteria FROM " . static::tableName . " WHERE deleted_at is null $limits_sql"; + $sql = "SELECT $criteria FROM {" . static::tableName . "} WHERE deleted_at is null $limits_sql"; } else { - $sql = "SELECT $criteria FROM " . static::tableName . " $limits_sql"; + $sql = "SELECT $criteria FROM {" . static::tableName . "} $limits_sql"; } $results = DBInstance::query($sql, Array(), static::connectionName); @@ -216,9 +216,9 @@ abstract class Entity { } } if (static::softdelete && !$trashed) { - $sql = "SELECT COUNT(*) FROM " . static::tableName . " $criteria_sql AND deleted_at is null"; + $sql = "SELECT COUNT(*) FROM {" . static::tableName . "} $criteria_sql AND deleted_at is null"; } else { - $sql = "SELECT COUNT(*) FROM " . static::tableName . " $criteria_sql"; + $sql = "SELECT COUNT(*) FROM {" . static::tableName . "} $criteria_sql"; } $results = DBInstance::queryOne($sql, $criteria_data, static::connectionName); @@ -275,9 +275,9 @@ abstract class Entity { } if (static::softdelete && !$trashed) { - $sql = "SELECT $select_sql FROM " . static::tableName . " $criteria_sql AND deleted_at is null $limits_sql"; + $sql = "SELECT $select_sql FROM {" . static::tableName . "} $criteria_sql AND deleted_at is null $limits_sql"; } else { - $sql = "SELECT $select_sql FROM " . static::tableName . " $criteria_sql $limits_sql"; + $sql = "SELECT $select_sql FROM {" . static::tableName . "} $criteria_sql $limits_sql"; } $results = DBInstance::query($sql, $criteria_data, static::connectionName); @@ -334,9 +334,9 @@ abstract class Entity { $select_sql = rtrim($select_sql, ', '); if (static::softdelete && !$trashed) { - $sql = "SELECT $select_sql FROM " . static::tableName . " $criteria_sql AND deleted_at is null $limits_sql"; + $sql = "SELECT $select_sql FROM {" . static::tableName . "} $criteria_sql AND deleted_at is null $limits_sql"; } else { - $sql = "SELECT $select_sql FROM " . static::tableName . " $criteria_sql $limits_sql"; + $sql = "SELECT $select_sql FROM {" . static::tableName . "} $criteria_sql $limits_sql"; } $results = DBInstance::query($sql, Array(), static::connectionName); @@ -444,7 +444,7 @@ abstract class Entity { foreach ($remote_limit as $key => $value) { $limits_sql .= "$key $value "; } - $sql = "SELECT $remote_in_pivot FROM $pivot_table WHERE $local_in_pivot = $this->id $limits_sql"; + $sql = "SELECT $remote_in_pivot FROM {$pivot_table} WHERE $local_in_pivot = $this->id $limits_sql"; $relations = DBInstance::query($sql, Array(), static::connectionName); $ids = Array(); diff --git a/src/index.php b/src/index.php index a0cee8a..a2975a6 100644 --- a/src/index.php +++ b/src/index.php @@ -4,25 +4,33 @@ include_once 'ORM/Connections.php'; include_once 'ORM/DBInstance.php'; include_once 'ORM/Entity.php'; +use ORM\Entity as Entity; +use ORM\Connections as Connections; +use ORM\DBInstance as DBInstance; + class Pais extends Entity{ - const table_name = 'basico_geografico_paises'; + const tableName = 'pais'; } class Estado extends Entity { - const table_name = 'basico_geografico_estados'; + const tableName = 'estado'; - function municipios() { - return $this->has_many(Municipio::class, 'estado_id'); + function pais(){ + return $this->belongsTo(Pais::class, 'pais_id'); } + +// function municipios() { +// return $this->has_many(Municipio::class, 'estado_id'); +// } } class Municipio extends Entity { - const table_name = 'basico_geografico_municipios'; + const tableName = 'basico_geografico_municipios'; function estado() { return $this->belongs_to(Estado::class, 'estado_id'); @@ -34,7 +42,7 @@ class User extends Entity { const timestamps = true; const softdelete = true; - const table_name = 'basico_auth_users'; + const tableName = 'basico_auth_users'; public function existencia() { $this->has_one(Existencia::class, 'user_id'); @@ -56,7 +64,7 @@ class User extends Entity { class Role extends Entity{ - const table_name = "basico_auth_roles"; + const tableName = "basico_auth_roles"; function permissions(){ return $this->belongs_to_many(Permission::class, 'basico_auth_role_permission', 'role_id', 'permission_id'); @@ -65,11 +73,13 @@ class Role extends Entity{ class Permission extends Entity{ - const table_name = "basico_auth_permissions"; + const tableName = "basico_auth_permissions"; } -Connections::add_connection(new PDO("pgsql:dbname=urfat; user=urfat; password=urfat;host=127.0.0.1;port=5432")); +$conn = new PDO("pgsql:dbname=urfat; user=urfat; password=urfat;host=127.0.0.1;port=5432"); +$conn->prefix = "urfat_"; +Connections::addConnection($conn); //$a = new Pais(); //$b = $a->count( Array('id' => Array('in', Array(10, 20, 30)) )); @@ -82,9 +92,12 @@ Connections::add_connection(new PDO("pgsql:dbname=urfat; user=urfat; password=ur //$a = new User(); //$a->load(1); //$a = User::find_one(Array('id'=>Array('=', 1) )); -$a = User::find_one( 1 ); -var_dump( $a->permissions() ); +//$a = Estado::findOne( 1 ); +//var_dump($a); +//var_dump($a->pais()); + +//var_dump( $a->permissions() ); //$a = new Estado(); //$a->load(23); @@ -96,3 +109,5 @@ var_dump( $a->permissions() ); //$a = new Municipio(); //$a->load(1); //$a->estado(); + +var_dump( DBInstance::queryOne('SELECT * FROM {estado}')); \ No newline at end of file