Example #1
0
 public static function saveEntity($entity)
 {
     if ($entity) {
         if (!$entity->validate('save')) {
             return false;
         }
         $entityCfg = $entity->getConfig();
         $vars = array();
         foreach ($entityCfg['columns'] as $key) {
             $vars[$key] = $entity->{$key};
         }
         if (!empty($vars[$entityCfg['id']]) && !$entity->checkIsNewRecord()) {
             return DaoSupport::updateEntity($entity);
         }
         $pdoManager = PdoManager::getInstance();
         $pdo = $pdoManager->getPdo($entity, true);
         try {
             $id = $pdo->insert($entityCfg['name'], $vars);
         } catch (Exception $e) {
             throw new DAOException(DAOException::DB_EXEC_EXCEPTION, DAOException::DB_EXEC_EXCEPTION_MESSAGE);
         }
         $cache = CacheManager::getInstance();
         $entiList = $cache->get("inserted_or_deleted_or_updated_list");
         if (!is_array($entiList)) {
             $entiList = array();
         }
         array_push($entiList, @get_class($entity));
         $cache->set("inserted_or_deleted_or_updated_list", $entiList);
         if ($id === false) {
             throw new DAOException(DAOException::DB_EXEC_EXCEPTION, DAOException::DB_EXEC_EXCEPTION_MESSAGE);
         }
         $relationCfg = $entity->getRelationPro();
         foreach ($relationCfg as $var => $conf) {
             if (isset($conf['cascade'])) {
                 $cascade = explode(",", $conf['cascade']);
                 if (in_array("save", $cascade)) {
                     $relationObject = $entity->{$conf}['name'];
                     //单个实体
                     if (is_object($relationObject)) {
                         $relationObject->{$conf}['column'] = $id;
                         self::saveEntity($relationObject);
                     }
                     //实体数组
                     if (is_array($relationObject)) {
                         foreach ($relationObject as $objectItem) {
                             if (is_object($objectItem)) {
                                 $objectItem->{$conf}['column'] = $id;
                                 self::saveEntity($objectItem);
                             }
                         }
                     }
                 }
             }
         }
         return $id;
     }
     return false;
 }
 /**
  * 按实体更新数据库,若不指定 where 则按给定主键更新;
  * @param object $entity
  * @param array $where
  */
 public function update($entity, $where = null)
 {
     return DaoSupport::updateEntity($entity, $where);
 }