public function init()
 {
     $member = $this->member;
     $instance = $this->instance;
     $class = get_class($instance);
     $annot = Reflexion::getAnnotationMember($class, $member, "ManyToMany");
     if ($annot != false) {
         $this->targetEntity = $annot->targetEntity;
         $this->inversedBy = strtolower($this->targetEntity) . "s";
         if (!is_null($annot->inversedBy)) {
             $this->inversedBy = $annot->inversedBy;
         }
         $this->targetEntityClass = get_class(new $this->targetEntity());
         $pk = OrmUtils::getFirstKey($this->targetEntityClass);
         $annotJoinTable = Reflexion::getAnnotationMember($class, $member, "JoinTable");
         $this->joinTable = $annotJoinTable->name;
         $joinColumnsAnnot = $annotJoinTable->joinColumns;
         $this->myFkField = "id" . OrmUtils::getTableName($class);
         $this->myPk = OrmUtils::getFirstKey($class);
         if (!is_null($joinColumnsAnnot)) {
             $this->myFkField = $joinColumnsAnnot->name;
             $this->myPk = $joinColumnsAnnot->referencedColumnName;
         }
         $this->targetEntityTable = OrmUtils::getTableName($this->targetEntity);
         $this->fkField = "id" . ucfirst($this->targetEntityTable);
         $this->pk = OrmUtils::getFirstKey($this->targetEntityClass);
         $inverseJoinColumnsAnnot = $annotJoinTable->inverseJoinColumns;
         if (!is_null($inverseJoinColumnsAnnot)) {
             $this->fkField = $inverseJoinColumnsAnnot->name;
             $this->pk = $inverseJoinColumnsAnnot->referencedColumnName;
         }
         return true;
     }
     return false;
 }
Example #2
0
 /**
  * Insère $instance dans la base de données
  * @param Classe $instance instance à insérer
  * @param $insertMany si vrai, sauvegarde des instances reliées à $instance par un ManyToMany
  */
 public static function insert($instance, $insertMany = false)
 {
     $tableName = OrmUtils::getTableName(get_class($instance));
     $keyAndValues = Reflexion::getPropertiesAndValues($instance);
     $keyAndValues = array_merge($keyAndValues, OrmUtils::getManyToOneMembersAndValues($instance));
     $sql = "INSERT INTO " . $tableName . "(" . SqlUtils::getInsertFields($keyAndValues) . ") VALUES(" . SqlUtils::getInsertFieldsValues($keyAndValues) . ")";
     \Logger::log("insert", $sql);
     \Logger::log("Key and values", json_encode($keyAndValues));
     $statement = DAO::$db->prepareStatement($sql);
     foreach ($keyAndValues as $key => $value) {
         DAO::$db->bindValueFromStatement($statement, $key, $value);
     }
     $result = $statement->execute();
     if ($result) {
         $accesseurId = "set" . ucfirst(OrmUtils::getFirstKey(get_class($instance)));
         $instance->{$accesseurId}(DAO::$db->lastInserId());
         if ($insertMany) {
             DAO::insertOrUpdateAllManyToMany($instance);
         }
     }
     return $result;
 }