当前位置: 首页>>代码示例>>PHP>>正文


PHP DataGenerator::addAncestor方法代码示例

本文整理汇总了PHP中DataGenerator::addAncestor方法的典型用法代码示例。如果您正苦于以下问题:PHP DataGenerator::addAncestor方法的具体用法?PHP DataGenerator::addAncestor怎么用?PHP DataGenerator::addAncestor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DataGenerator的用法示例。


在下文中一共展示了DataGenerator::addAncestor方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: addAncestor

 /**
  * Method adds related "parent/ancestor" records recursively.
  *
  * It should be used only to create records which have only one primary key.
  *
  * Note: in theory it should work for ancestor records with multiple primary keys
  * but this behaviour is undefined.
  *
  * @param string $table       Table name
  * @param string $primaryKey  Used as primary key for ancestor
  * @return int  New ID
  * @access package private
  */
 function addAncestor($table, $primaryKey = null)
 {
     $doAncestor = OA_Dal::factoryDO($table);
     if ($primaryKey && ($primaryKeyField = $doAncestor->getFirstPrimaryKey())) {
         // it's possible to preset parent id's (only one level up so far)
         $doAncestor->{$primaryKeyField} = $primaryKey;
     }
     if (!empty($this) && is_a($this, 'DataGenerator')) {
         $this->setDefaultValues($doAncestor);
     } else {
         DataGenerator::setDefaultValues($doAncestor);
     }
     $links = $doAncestor->links();
     foreach ($links as $foreignKey => $linkedTableField) {
         list($ancestorTableWithPrefix, $link) = explode(':', $linkedTableField);
         $ancestorTable = $doAncestor->getTableWithoutPrefix($ancestorTableWithPrefix);
         if (isset($this) && is_a($this, 'DataGenerator')) {
             $fieldValue = $this->getFieldValueFromDataContainer($table, $foreignKey);
         } else {
             $fieldValue = DataGenerator::getFieldValueFromDataContainer($table, $foreignKey);
         }
         if (isset($fieldValue) && !isset($GLOBALS['dataGeneratorDontOptimize'])) {
             //hack for quick test fix
             $doAncestor->{$foreignKey} = $fieldValue;
         } else {
             if (isset($this) && is_a($this, 'DataGenerator')) {
                 $doAncestor->{$foreignKey} = $this->addAncestor($ancestorTable);
             } else {
                 $doAncestor->{$foreignKey} = DataGenerator::addAncestor($ancestorTable);
             }
         }
     }
     DataGenerator::trackData($table);
     $id = $doAncestor->insert();
     DataGenerator::getReferenceId($table, $id);
     // store the id
     return $id;
 }
开发者ID:villos,项目名称:tree_admin,代码行数:51,代码来源:DataGenerator.php


注:本文中的DataGenerator::addAncestor方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。