Ejemplo n.º 1
0
 protected function _initializeLink($attributName, $params = array())
 {
     $attributLinkShema = $this->_shema->get($attributName)->getLink();
     $typeLink = $attributLinkShema->getTypeLink();
     $linkedTable = $this->_tableManager->get($attributLinkShema->getLinkedTable());
     $linkedColumn = $attributLinkShema->getLinkedColumn();
     if ($typeLink->is('OneToMany') || $typeLink->is('ManyToMany')) {
         // recherche de la table des liens
         $tableLink = $attributLinkShema->getLinkTable();
         // Si aucune définit, une table TableOrigin_LinkedTable est retournée
         $valueLinked = QueryBuilder::create()->select()->from($tableLink)->where('id_origin', '==', $this->_attributs['id']);
         $entities = $linkedTable->find(array($linkedColumn, $valueLinked), $params);
     } elseif ($typeLink->is('OneToOne') || $typeLink->is('ManyToOne')) {
         $entities = $linkedTable->find(array($linkedColumn, $this->_attributs['attributName']), $params);
     }
     return $entities;
 }
Ejemplo n.º 2
0
 public function __call($name, array $params)
 {
     // Traitement du nom de la fonction
     $function = array();
     $tmp = "";
     foreach (str_split($name) as $key => $value) {
         if (ord($value) >= 65 && ord($value) <= 90) {
             array_push($function, strtolower($tmp));
             $tmp = "";
         }
         $tmp .= $value;
     }
     array_push($function, strtolower($tmp));
     if ($function[0] == "find" && ($function[1] == "by" || $function[1] == "all")) {
         $cptWhere = 0;
         $requete = QueryBuilder::create()->from($this->getName());
         if ($function[1] == "by") {
             $options = isset($params[1]) ? $params[1] : null;
             $requete->where($function[2], "IN", is_array($params[0]) ? $params[0] : array($params[0]));
             $cptWhere++;
         } else {
             $options = isset($params[0]) ? $params[0] : null;
         }
         $return = array();
         if (isset($options["orderBy"])) {
             $requete->orderBy($options["orderBy"]);
         }
         if (isset($options["limit"])) {
             $start = is_array($options["limit"]) ? $options["limit"][0] : 0;
             $stop = is_array($options["limit"]) ? $options["limit"][1] : $options["limit"];
             $requete->limit($start, $stop);
         }
         if (isset($options["where"])) {
             foreach ($options["where"] as $key => $value) {
                 $nameFunctionWhere = $cptWhere == 0 ? "where" : "andWhere";
                 $requete->{$nameFunctionWhere}($value[0], $value[1], $value[2]);
                 $cptWhere++;
             }
         }
         $data = $this->afterFind($requete->fetch(), $options);
         // Traitement par la classe fille
         foreach ($data as $key => $value) {
             $object = $this->tableManager->getEntityManager()->get($this->getName());
             array_push($return, $object->populate($value));
         }
         return new Collection($return);
         // if(count($return) > 0)
         // 	return (count($return) > 1 || $function[1] == "all") ? $return : $return[0] ;
         // else
         // 	return ($function[1] == "all") ? array() : false ;
     } else {
         return false;
     }
 }