本文整理汇总了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;
}