Exemplo n.º 1
0
 /**
  * @return Model
  */
 public function model($namespace, $alias = 'a')
 {
     $instance = null;
     if (is_object($namespace)) {
         $instance = $namespace;
     } else {
         if (strpos($namespace, ':')) {
             $namespace = Util::getNamespaceModel($namespace);
         }
         if (!class_exists($namespace)) {
             throw new \Exception("El modelo '{$namespace}' no fue encontrado.");
         }
         $instance = new $namespace();
     }
     $this->propertiesInstance = $this->getPropertiesInstance($instance);
     $this->propertiesInstance['alias'] = $alias;
     $this->Model->setPropertiesInstance($this->propertiesInstance, $this);
     return $this->Model;
 }
Exemplo n.º 2
0
 private function buildJoin($namespace, $alias, $type_join)
 {
     $QueryBuilder = $this->getQueryBuilder();
     $type_join = strtoupper($type_join);
     if (strpos($namespace, ':')) {
         $shortNamespace = $namespace;
         $namespace = Util::getNamespaceModel($namespace);
     } else {
         $shortNamespace = Util::getShortNamespaceModel($namespace);
     }
     $instance = new $namespace();
     $relations = $this->propertiesInstance['instance']->getDefinitionRelations();
     if (array_key_exists($shortNamespace, $relations)) {
         $QueryBuilder->from($this->propertiesInstance['table'], $this->propertiesInstance['alias']);
         if ($type_join == 'INNER_JOIN') {
             $QueryBuilder->innerJoin($this->propertiesInstance['alias'], $this->propertiesInstance['prefix'] . $instance::table, $alias, "{$alias}." . $instance::primary . " = {$this->propertiesInstance['alias']}.{$relations[$shortNamespace]['fieldLocal']}");
         } else {
             if ($type_join == 'LEFT_JOIN') {
                 $QueryBuilder->leftJoin($this->propertiesInstance['alias'], $this->propertiesInstance['prefix'] . $instance::table, $alias, "{$alias}." . $instance::primary . " = {$this->propertiesInstance['alias']}.{$relations[$shortNamespace]['fieldLocal']}");
             } else {
                 if ($type_join == 'RIGHT_JOIN') {
                     $QueryBuilder->rightJoin($this->propertiesInstance['alias'], $this->propertiesInstance['prefix'] . $instance::table, $alias, "{$alias}." . $instance::primary . " = {$this->propertiesInstance['alias']}.{$relations[$shortNamespace]['fieldLocal']}");
                 }
             }
         }
     }
     // Si no se ha agregado un selecto se coloca todos los campos de ambos modelos
     if (count($QueryBuilder->getQueryPart('select')) == 0) {
         $QueryBuilder->select("{$this->propertiesInstance['alias']}.*, {$alias}.*");
     }
 }
Exemplo n.º 3
0
 public function setNameModel($namespace)
 {
     if (strpos($namespace, ':')) {
         $namespace = \Kodazzi\Tools\Util::getNamespaceModel($namespace);
     }
     $this->name_model = $namespace;
 }