本文整理汇总了PHP中ColumnMap::getRelatedColumnName方法的典型用法代码示例。如果您正苦于以下问题:PHP ColumnMap::getRelatedColumnName方法的具体用法?PHP ColumnMap::getRelatedColumnName怎么用?PHP ColumnMap::getRelatedColumnName使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ColumnMap
的用法示例。
在下文中一共展示了ColumnMap::getRelatedColumnName方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: getRowValue
/**
* Gets value for row table
*
* Swaps foreign creator_node_id values for their unique FQDN value. Note that the other
* part(s) to a primary or foreign key is set by the creator and is the same in all nodes,
* so may be hashed without causing difference problems between nodes.
*
* @todo Better node table detection required (should use known prefix)
* @todo Fix column name hardwiring
*
* @param MeshingBaseObject $object
* @param ColumnMap $columnMap
* @return mixed
*/
protected function getRowValue(MeshingBaseObject $object, ColumnMap $columnMap)
{
// Get value for this column
$columnName = $columnMap->getName();
$value = $object->getByName($columnName, BasePeer::TYPE_RAW_COLNAME);
// If the related table name ends with '_known_node' then we assume this is a
// FK to a creator node ID.
if ($columnMap->isForeignKey()) {
$match = '_known_node';
$isNodeTable = $match == substr($columnMap->getRelatedTableName(), -strlen($match));
if ($isNodeTable && $columnMap->getRelatedColumnName() == 'ID') {
$nodePeerName = $columnMap->getRelation()->getForeignTable()->getPeerClassname();
$node = call_user_func(array($nodePeerName, 'retrieveByPK'), $value, $this->con);
// If there is no related node, we really do have problems!
if (!$node) {
$primaryKey = $object->getPrimaryKey();
if (is_array($primaryKey)) {
$primaryKey = '{' . implode(',', $primaryKey) . '}';
}
$type = get_class($object);
throw new Exception("Row {$primaryKey} in table '{$type}' points to a non-existent node row");
}
$value = $node->getFqdn();
}
}
return $value;
}