當前位置: 首頁>>代碼示例>>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;未經允許,請勿轉載。