Artur Welp 6 жил өмнө
parent
commit
0f0eeb057f
3 өөрчлөгдсөн 52 нэмэгдсэн , 28 устгасан
  1. 9 0
      src/ORM/DBInstance.php
  2. 17 17
      src/ORM/Entity.php
  3. 26 11
      src/index.php

+ 9 - 0
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);

+ 17 - 17
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();

+ 26 - 11
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}'));