This commit is contained in:
Artur Welp
2019-04-24 03:30:00 -03:00
parent 1597659c64
commit 0f0eeb057f
3 changed files with 52 additions and 28 deletions
+9
View File
@@ -4,7 +4,13 @@ namespace ORM;
class DBInstance { 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') { public static function execute($sql, $data = null, $instance = 'default') {
$sql = self::addPrefix($sql, $instance);
if ($data) { if ($data) {
self::queryPrepare($sql, $data, $instance); self::queryPrepare($sql, $data, $instance);
} else { } else {
@@ -19,6 +25,7 @@ class DBInstance {
} }
public static function query($sql, $data = null, $instance = 'default') { public static function query($sql, $data = null, $instance = 'default') {
$sql = self::addPrefix($sql, $instance);
if ($data) { if ($data) {
return self::queryPrepare($sql, $data, $instance); return self::queryPrepare($sql, $data, $instance);
} else { } else {
@@ -28,6 +35,7 @@ class DBInstance {
} }
public static function queryOne($sql, $data = null, $instance = 'default') { public static function queryOne($sql, $data = null, $instance = 'default') {
$sql = self::addPrefix($sql, $instance);
if ($data) { if ($data) {
return self::queryPrepare($sql, $data, $instance); return self::queryPrepare($sql, $data, $instance);
} else { } else {
@@ -37,6 +45,7 @@ class DBInstance {
} }
public static function queryPrepare($sql, $data = Array(), $instance = 'default') { public static function queryPrepare($sql, $data = Array(), $instance = 'default') {
$sql = self::addPrefix($sql, $instance);
$con = Connections::getConnection($instance); $con = Connections::getConnection($instance);
$statement = $con->prepare($sql); $statement = $con->prepare($sql);
$statement->execute($data); $statement->execute($data);
+17 -17
View File
@@ -4,17 +4,17 @@ namespace ORM;
abstract class Entity { abstract class Entity {
const table_name = ''; const tableName = '';
const connection_name = 'default'; const connectionName = 'default';
const softdelete = false; const softdelete = false;
const _ignore = Array( const _ignore = Array(
'classname', 'classname',
'_properties', '_properties',
'_ignore', '_ignore',
'connection_name', 'connectionName',
'timestamps', 'timestamps',
'softdelete', 'softdelete',
'table_name' 'tableName'
); );
const _properties = Array(); const _properties = Array();
@@ -80,7 +80,7 @@ abstract class Entity {
$update_string = rtrim($update_string, ', '); $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); DBInstance::execute($sql, $update_data, static::connectionName);
} }
@@ -102,7 +102,7 @@ abstract class Entity {
$first_argument = rtrim($first_argument, ', '); $first_argument = rtrim($first_argument, ', ');
$second_argument = rtrim($second_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); DBInstance::execute($sql, $insert_data, static::connectionName);
$this->id = DBInstance::lastInsert(); $this->id = DBInstance::lastInsert();
} }
@@ -121,13 +121,13 @@ abstract class Entity {
return; 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]); $this->fill(DBInstance::queryPrepare($sql, Array($id), static::connectionName)[0]);
} }
public function purge() { 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); DBInstance::execute($sql, Array('id' => $this->id), static::connectionName);
} }
@@ -164,9 +164,9 @@ abstract class Entity {
} }
if (static::softdelete && !$trashed) { 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 { } else {
$sql = "SELECT $criteria FROM " . static::tableName . " $limits_sql"; $sql = "SELECT $criteria FROM {" . static::tableName . "} $limits_sql";
} }
$results = DBInstance::query($sql, Array(), static::connectionName); $results = DBInstance::query($sql, Array(), static::connectionName);
@@ -216,9 +216,9 @@ abstract class Entity {
} }
} }
if (static::softdelete && !$trashed) { 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 { } 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); $results = DBInstance::queryOne($sql, $criteria_data, static::connectionName);
@@ -275,9 +275,9 @@ abstract class Entity {
} }
if (static::softdelete && !$trashed) { 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 { } 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); $results = DBInstance::query($sql, $criteria_data, static::connectionName);
@@ -334,9 +334,9 @@ abstract class Entity {
$select_sql = rtrim($select_sql, ', '); $select_sql = rtrim($select_sql, ', ');
if (static::softdelete && !$trashed) { 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 { } 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); $results = DBInstance::query($sql, Array(), static::connectionName);
@@ -444,7 +444,7 @@ abstract class Entity {
foreach ($remote_limit as $key => $value) { foreach ($remote_limit as $key => $value) {
$limits_sql .= "$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); $relations = DBInstance::query($sql, Array(), static::connectionName);
$ids = Array(); $ids = Array();
+26 -11
View File
@@ -4,25 +4,33 @@ include_once 'ORM/Connections.php';
include_once 'ORM/DBInstance.php'; include_once 'ORM/DBInstance.php';
include_once 'ORM/Entity.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{ class Pais extends Entity{
const table_name = 'basico_geografico_paises'; const tableName = 'pais';
} }
class Estado extends Entity { class Estado extends Entity {
const table_name = 'basico_geografico_estados'; const tableName = 'estado';
function municipios() { function pais(){
return $this->has_many(Municipio::class, 'estado_id'); return $this->belongsTo(Pais::class, 'pais_id');
} }
// function municipios() {
// return $this->has_many(Municipio::class, 'estado_id');
// }
} }
class Municipio extends Entity { class Municipio extends Entity {
const table_name = 'basico_geografico_municipios'; const tableName = 'basico_geografico_municipios';
function estado() { function estado() {
return $this->belongs_to(Estado::class, 'estado_id'); return $this->belongs_to(Estado::class, 'estado_id');
@@ -34,7 +42,7 @@ class User extends Entity {
const timestamps = true; const timestamps = true;
const softdelete = true; const softdelete = true;
const table_name = 'basico_auth_users'; const tableName = 'basico_auth_users';
public function existencia() { public function existencia() {
$this->has_one(Existencia::class, 'user_id'); $this->has_one(Existencia::class, 'user_id');
@@ -56,7 +64,7 @@ class User extends Entity {
class Role extends Entity{ class Role extends Entity{
const table_name = "basico_auth_roles"; const tableName = "basico_auth_roles";
function permissions(){ function permissions(){
return $this->belongs_to_many(Permission::class, 'basico_auth_role_permission', 'role_id', 'permission_id'); 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{ 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(); //$a = new Pais();
//$b = $a->count( Array('id' => Array('in', Array(10, 20, 30)) )); //$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 = new User();
//$a->load(1); //$a->load(1);
//$a = User::find_one(Array('id'=>Array('=', 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 = new Estado();
//$a->load(23); //$a->load(23);
@@ -96,3 +109,5 @@ var_dump( $a->permissions() );
//$a = new Municipio(); //$a = new Municipio();
//$a->load(1); //$a->load(1);
//$a->estado(); //$a->estado();
var_dump( DBInstance::queryOne('SELECT * FROM {estado}'));