本文整理汇总了PHP中ForeignKey::getTable方法的典型用法代码示例。如果您正苦于以下问题:PHP ForeignKey::getTable方法的具体用法?PHP ForeignKey::getTable怎么用?PHP ForeignKey::getTable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ForeignKey
的用法示例。
在下文中一共展示了ForeignKey::getTable方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: addRefFKGet
/**
* Adds the method that returns the referrer fkey collection.
* @param string &$script The script will be modified in this method.
*/
protected function addRefFKGet(&$script, ForeignKey $refFK)
{
$table = $this->getTable();
$tblFK = $refFK->getTable();
$peerClassname = $this->getStubPeerBuilder()->getClassname();
$fkPeerBuilder = $this->getNewPeerBuilder($refFK->getTable());
$relCol = $this->getRefFKPhpNameAffix($refFK, $plural = true);
$collName = $this->getRefFKCollVarName($refFK);
$lastCriteriaName = $this->getRefFKLastCriteriaVarName($refFK);
$className = $fkPeerBuilder->getObjectClassname();
$script .= "\n\t/**\n\t * Gets an array of {$className} objects which contain a foreign key that references this object.\n\t *\n\t * If this collection has already been initialized with an identical Criteria, it returns the collection.\n\t * Otherwise if this " . $this->getObjectClassname() . " has previously been saved, it will retrieve\n\t * related {$relCol} from storage. If this " . $this->getObjectClassname() . " is new, it will return\n\t * an empty collection or the current collection, the criteria is ignored on a new object.\n\t *\n\t * @param PropelPDO \$con\n\t * @param Criteria \$criteria\n\t * @return array {$className}[]\n\t * @throws PropelException\n\t */\n\tpublic function get{$relCol}(\$criteria = null, PropelPDO \$con = null, array \$selectedColumns = null)\n\t{";
$script .= "\n\t\tif (\$criteria === null) {\n\t\t\t\$criteria = new Criteria({$peerClassname}::DATABASE_NAME);\n\t\t}\n\t\telseif (\$criteria instanceof Criteria)\n\t\t{\n\t\t\t\$criteria = clone \$criteria;\n\t\t}\n\n\t\tif (\$this->{$collName} === null) {\n\t\t\tif (\$this->isNew()) {\n\t\t\t \$this->{$collName} = array();\n\t\t\t} else {\n";
foreach ($refFK->getLocalColumns() as $colFKName) {
// $colFKName is local to the referring table (i.e. foreign to this table)
$lfmap = $refFK->getLocalForeignMapping();
$localColumn = $this->getTable()->getColumn($lfmap[$colFKName]);
$colFK = $refFK->getTable()->getColumn($colFKName);
$clo = strtolower($localColumn->getName());
$script .= "\n\t\t\t\t\$criteria->add(" . $fkPeerBuilder->getColumnConstant($colFK) . ", \$this->{$clo});\n";
}
// end foreach ($fk->getForeignColumns()
$script .= "\n if (null !== \$selectedColumns) {\n " . $fkPeerBuilder->getPeerClassname() . "::setSelectedColumns(\$selectedColumns);\n }\n\t\t\t\t" . $fkPeerBuilder->getPeerClassname() . "::addSelectColumns(\$criteria);\n\t\t\t\t\$this->{$collName} = " . $fkPeerBuilder->getPeerClassname() . "::doSelect(\$criteria, \$con);\n\t\t\t}\n\t\t} else {\n\t\t\t// criteria has no effect for a new object\n\t\t\tif (!\$this->isNew()) {\n\t\t\t\t// the following code is to determine if a new query is\n\t\t\t\t// called for. If the criteria is the same as the last\n\t\t\t\t// one, just return the collection.\n";
foreach ($refFK->getLocalColumns() as $colFKName) {
// $colFKName is local to the referring table (i.e. foreign to this table)
$lfmap = $refFK->getLocalForeignMapping();
$localColumn = $this->getTable()->getColumn($lfmap[$colFKName]);
$colFK = $refFK->getTable()->getColumn($colFKName);
$clo = strtolower($localColumn->getName());
$script .= "\n\n\t\t\t\t\$criteria->add(" . $fkPeerBuilder->getColumnConstant($colFK) . ", \$this->{$clo});\n";
}
// foreach ($fk->getForeignColumns()
$script .= "\n if (null !== \$selectedColumns) {\n " . $fkPeerBuilder->getPeerClassname() . "::setSelectedColumns(\$selectedColumns);\n }\n\t\t\t\t" . $fkPeerBuilder->getPeerClassname() . "::addSelectColumns(\$criteria);\n\t\t\t\tif (!isset(\$this->{$lastCriteriaName}) || !\$this->" . $lastCriteriaName . "->equals(\$criteria)) {\n\t\t\t\t\t\$this->{$collName} = " . $fkPeerBuilder->getPeerClassname() . "::doSelect(\$criteria, \$con);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\$this->{$lastCriteriaName} = \$criteria;\n\t\treturn \$this->{$collName};\n\t}\n";
}
示例2: getAddForeignKeyDDL
public function getAddForeignKeyDDL(ForeignKey $fk)
{
if ($fk->isSkipSql()) {
return;
}
$pattern = "\nBEGIN\nALTER TABLE %s ADD %s\nEND\n;\n";
return sprintf($pattern, $this->quoteIdentifier($fk->getTable()->getName()), $this->getForeignKeyDDL($fk));
}
示例3: getRelatedBySuffix
/**
* Gets the "RelatedBy*" suffix (if needed) that is attached to method and variable names.
*
* The related by suffix is based on the local columns of the foreign key. If there is more than
* one column in a table that points to the same foreign table, then a 'RelatedByLocalColName' suffix
* will be appended.
*
* @return string
*/
protected function getRelatedBySuffix(ForeignKey $fk, $columnCheck = false)
{
$relCol = "";
foreach ($fk->getLocalColumns() as $columnName) {
$column = $fk->getTable()->getColumn($columnName);
if (!$column) {
throw new Exception("Could not fetch column: {$columnName} in table " . $fk->getTable()->getName());
}
if (count($column->getTable()->getForeignKeysReferencingTable($fk->getForeignTableName())) > 1 || $fk->getForeignTableName() == $fk->getTable()->getName()) {
// if there are seeral foreign keys that point to the same table
// then we need to generate methods like getAuthorRelatedByColName()
// instead of just getAuthor(). Currently we are doing the same
// for self-referential foreign keys, to avoid confusion.
$relCol .= $column->getPhpName();
}
}
#var_dump($fk->getForeignTableName() . ' - ' .$fk->getTableName() . ' - ' . $this->getTable()->getName());
#$fk->getForeignTableName() != $this->getTable()->getName() &&
// @todo comment on it
if ($columnCheck && !$relCol && $fk->getTable()->getColumn($fk->getForeignTableName())) {
foreach ($fk->getLocalColumns() as $columnName) {
$column = $fk->getTable()->getColumn($columnName);
$relCol .= $column->getPhpName();
}
}
if ($relCol != "") {
$relCol = "RelatedBy" . $relCol;
}
return $relCol;
}
示例4: addCrossFKRemove
/**
* Adds the method that remove an object from the referrer fkey collection.
* @param string $script The script will be modified in this method.
*/
protected function addCrossFKRemove(&$script, ForeignKey $refFK, ForeignKey $crossFK)
{
$relCol = $this->getFKPhpNameAffix($crossFK, $plural = true);
$collName = 'coll' . $relCol;
$tblFK = $refFK->getTable();
$joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable());
$className = $joinedTableObjectBuilder->getObjectClassname();
$lowerRelCol = $relCol;
$lowerRelCol[0] = strtolower($lowerRelCol[0]);
$M2MScheduledForDeletion = $lowerRelCol . "ScheduledForDeletion";
$crossObjectName = '$' . $crossFK->getForeignTable()->getStudlyPhpName();
$crossObjectClassName = $this->getNewObjectBuilder($crossFK->getForeignTable())->getObjectClassname();
$relatedObjectClassName = $this->getFKPhpNameAffix($crossFK, $plural = false);
$script .= "\n /**\n * Remove a {$crossObjectClassName} object to this object\n * through the {$tblFK->getName()} cross reference table.\n *\n * @param {$crossObjectClassName} {$crossObjectName} The {$className} object to relate\n * @return void\n */\n public function remove{$relatedObjectClassName}({$crossObjectClassName} {$crossObjectName})\n {\n if (\$this->get{$relCol}()->contains({$crossObjectName})) {\n \$this->{$collName}->remove(\$this->{$collName}->search({$crossObjectName}));\n if (null === \$this->{$M2MScheduledForDeletion}) {\n \$this->{$M2MScheduledForDeletion} = clone \$this->{$collName};\n \$this->{$M2MScheduledForDeletion}->clear();\n }\n \$this->{$M2MScheduledForDeletion}[]= {$crossObjectName};\n }\n }\n";
}
示例5: addCrossFKDoAdd
/**
* @param string &$script The script will be modified in this method.
* @param ForeignKey $refFK
* @param ForeignKey $crossFK
*/
protected function addCrossFKDoAdd(&$script, ForeignKey $refFK, ForeignKey $crossFK)
{
$relatedObjectClassName = $this->getFKPhpNameAffix($crossFK, $plural = false);
// lcfirst() doesn't exist in PHP < 5.3
$lowerRelatedObjectClassName = $relatedObjectClassName;
$lowerRelatedObjectClassName[0] = strtolower($lowerRelatedObjectClassName[0]);
$joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable());
$className = $joinedTableObjectBuilder->getObjectClassname();
$tblFK = $refFK->getTable();
$foreignObjectName = '$' . $tblFK->getStudlyPhpName();
$script .= "\n\t/**\n\t * @param\t{$relatedObjectClassName} \${$lowerRelatedObjectClassName} The {$lowerRelatedObjectClassName} object to add.\n\t */\n\tprotected function doAdd{$relatedObjectClassName}(\${$lowerRelatedObjectClassName})\n\t{\n\t\t{$foreignObjectName} = new {$className}();\n\t\t{$foreignObjectName}->set{$relatedObjectClassName}(\${$lowerRelatedObjectClassName});\n\t\t\$this->add{$className}({$foreignObjectName});\n\t}\n";
}
示例6: getReferrerVersionsColumn
public function getReferrerVersionsColumn(ForeignKey $fk)
{
$fkTableName = $fk->getTable()->getName();
$fkIdsColumnName = $fkTableName . '_versions';
return $this->versionTable->getColumn($fkIdsColumnName);
}
示例7: getRefRelatedBySuffix
protected static function getRefRelatedBySuffix(ForeignKey $fk)
{
$relCol = '';
foreach ($fk->getLocalForeignMapping() as $localColumnName => $foreignColumnName) {
$localTable = $fk->getTable();
$localColumn = $localTable->getColumn($localColumnName);
if (!$localColumn) {
throw new Exception("Could not fetch column: {$columnName} in table " . $localTable->getName());
}
$foreignKeysToForeignTable = $localTable->getForeignKeysReferencingTable($fk->getForeignTableName());
if ($fk->getForeignTableName() == $fk->getTableName()) {
// self referential foreign key
$relCol .= $fk->getForeignTable()->getColumn($foreignColumnName)->getPhpName();
if (count($foreignKeysToForeignTable) > 1) {
// several self-referential foreign keys
$relCol .= array_search($fk, $foreignKeysToForeignTable);
}
} elseif (count($foreignKeysToForeignTable) > 1 || count($fk->getForeignTable()->getForeignKeysReferencingTable($fk->getTableName())) > 0) {
// several foreign keys to the same table, or symmetrical foreign key in foreign table
$relCol .= $localColumn->getPhpName();
}
}
if ($relCol != '') {
$relCol = 'RelatedBy' . $relCol;
}
return $relCol;
}
示例8: addRefFKGet
/**
* Adds the method that returns the referrer fkey collection.
* @param string &$script The script will be modified in this method.
*/
protected function addRefFKGet(&$script, ForeignKey $refFK)
{
$table = $this->getTable();
$tblFK = $refFK->getTable();
$fkPeerBuilder = OMBuilder::getNewPeerBuilder($refFK->getTable());
$relCol = $this->getRefFKPhpNameAffix($refFK, $plural = true);
$collName = $this->getRefFKCollVarName($refFK);
$lastCriteriaName = $this->getRefFKLastCriteriaVarName($refFK);
$script .= "\n\t/**\n\t * If this collection has already been initialized with\n\t * an identical criteria, it returns the collection.\n\t * Otherwise if this " . $table->getPhpName() . " has previously\n\t * been saved, it will retrieve related {$relCol} from storage.\n\t * If this " . $table->getPhpName() . " is new, it will return\n\t * an empty collection or the current collection, the criteria\n\t * is ignored on a new object.\n\t *\n\t * @param Connection \$con\n\t * @param Criteria \$criteria\n\t * @throws PropelException\n\t */\n\tpublic function get{$relCol}(\$criteria = null, \$con = null)\n\t{\n\t\t// include the Peer class\n\t\tinclude_once '" . $fkPeerBuilder->getClassFilePath() . "';\n\t\tif (\$criteria === null) {\n\t\t\t\$criteria = new Criteria();\n\t\t}\n\t\telseif (\$criteria instanceof Criteria)\n\t\t{\n\t\t\t\$criteria = clone \$criteria;\n\t\t}\n\n\t\tif (\$this->{$collName} === null) {\n\t\t\tif (\$this->isNew()) {\n\t\t\t \$this->{$collName} = array();\n\t\t\t} else {\n";
foreach ($refFK->getLocalColumns() as $colFKName) {
// $colFKName is local to the referring table (i.e. foreign to this table)
$lfmap = $refFK->getLocalForeignMapping();
$localColumn = $this->getTable()->getColumn($lfmap[$colFKName]);
$colFK = $refFK->getTable()->getColumn($colFKName);
$script .= "\n\t\t\t\t\$criteria->add(" . $fkPeerBuilder->getColumnConstant($colFK) . ", \$this->get" . $localColumn->getPhpName() . "());\n";
}
// end foreach ($fk->getForeignColumns()
$script .= "\n\t\t\t\t" . $fkPeerBuilder->getPeerClassname() . "::addSelectColumns(\$criteria);\n\t\t\t\t\$this->{$collName} = " . $fkPeerBuilder->getPeerClassname() . "::doSelect(\$criteria, \$con);\n\t\t\t}\n\t\t} else {\n\t\t\t// criteria has no effect for a new object\n\t\t\tif (!\$this->isNew()) {\n\t\t\t\t// the following code is to determine if a new query is\n\t\t\t\t// called for. If the criteria is the same as the last\n\t\t\t\t// one, just return the collection.\n";
foreach ($refFK->getLocalColumns() as $colFKName) {
// $colFKName is local to the referring table (i.e. foreign to this table)
$lfmap = $refFK->getLocalForeignMapping();
$localColumn = $this->getTable()->getColumn($lfmap[$colFKName]);
$colFK = $refFK->getTable()->getColumn($colFKName);
$script .= "\n\n\t\t\t\t\$criteria->add(" . $fkPeerBuilder->getColumnConstant($colFK) . ", \$this->get" . $localColumn->getPhpName() . "());\n";
}
// foreach ($fk->getForeignColumns()
$script .= "\n\t\t\t\t" . $fkPeerBuilder->getPeerClassname() . "::addSelectColumns(\$criteria);\n\t\t\t\tif (!isset(\$this->{$lastCriteriaName}) || !\$this->" . $lastCriteriaName . "->equals(\$criteria)) {\n\t\t\t\t\t\$this->{$collName} = " . $fkPeerBuilder->getPeerClassname() . "::doSelect(\$criteria, \$con);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t\$this->{$lastCriteriaName} = \$criteria;\n\t\treturn \$this->{$collName};\n\t}\n";
}
示例9: addPKRefFKGet
/**
* Adds the method that gets a one-to-one related referrer fkey.
* This is for one-to-one relationship special case.
* @param string &$script The script will be modified in this method.
*/
protected function addPKRefFKGet(&$script, ForeignKey $refFK)
{
$table = $this->getTable();
$tblFK = $refFK->getTable();
$joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable());
$joinedTablePeerBuilder = $this->getNewObjectBuilder($refFK->getTable());
$className = $joinedTableObjectBuilder->getObjectClassname();
$varName = $this->getPKRefFKVarName($refFK);
$script .= "\n\t/**\n\t * Gets a single {$className} object, which is related to this object by a one-to-one relationship.\n\t *\n\t * @param PropelPDO \$con\n\t * @return {$className}\n\t * @throws PropelException\n\t */\n\tpublic function get" . $this->getRefFKPhpNameAffix($refFK, $plural = false) . "(PropelPDO \$con = null)\n\t{\n";
$script .= "\n\t\tif (\$this->{$varName} === null && !\$this->isNew()) {";
$lfmap = $refFK->getLocalForeignMapping();
// remember: this object represents the foreign table,
// so we need foreign columns of the reffk to know the local columns
// that we need to set :)
$localcols = $refFK->getForeignColumns();
// we know that at least every column in the primary key of the foreign table
// is represented in this foreign key
$params = array();
foreach ($tblFK->getPrimaryKey() as $col) {
$localColumn = $table->getColumn($lfmap[$col->getName()]);
$clo = strtolower($localColumn->getName());
$params[] = "\$this->{$clo}";
}
$script .= "\n\t\t\t\$this->{$varName} = " . $joinedTableObjectBuilder->getPeerClassname() . "::retrieveByPK(" . implode(", ", $params) . ", \$con);\n\t\t}\n\n\t\treturn \$this->{$varName};\n\t}\n";
}
示例10: setIncomingForeignKey
/**
* @param ForeignKey $foreignKey
*/
public function setIncomingForeignKey($foreignKey)
{
$this->setMiddleTable($foreignKey ? $foreignKey->getTable() : null);
$this->incomingForeignKey = $foreignKey;
}
示例11: addRefFkGetById
protected function addRefFkGetById(&$script, ForeignKey $refFk)
{
$foreignPeerBuilder = self::getNewPeerBuilder($refFk->getTable());
$args = array();
foreach ($refFk->getForeignColumns() as $foreignName) {
$args[] = "\${$foreignName}";
}
$args = implode(', ', $args);
$script .= <<<script
public static function get{$this->getRefFkPhpNameAffix($refFk, true)}ById({$args}, array \$options = array())
{
\$criteria = new Criteria;
self::add{$this->getRefFkPhpNameAffix($refFk, true)}CriteriaById(\$criteria, {$args});
return {$foreignPeerBuilder->getPeerClassName()}::get(\$criteria, \$options);
}
script;
}
示例12: getRelatedBySuffix
/**
* Gets the "RelatedBy*" suffix (if needed) that is attached to method and variable names.
*
* The related by suffix is based on the local columns of the foreign key. If there is more than
* one column in a table that points to the same foreign table, then a 'RelatedByLocalColName' suffix
* will be appended.
*
* @return string
*/
protected static function getRelatedBySuffix(ForeignKey $fk, $reverseOnSelf = false)
{
$relCol = '';
foreach ($fk->getLocalForeignMapping() as $columnName => $foreignColumnName) {
$column = $fk->getTable()->getColumn($columnName);
if (!$column) {
throw new Exception("Could not fetch column: {$columnName} in table " . $fk->getTable()->getName());
}
if (count($column->getTable()->getForeignKeysReferencingTable($fk->getForeignTableName())) > 1) {
// if there are several foreign keys that point to the same table
// then we need to generate methods like getAuthorRelatedByColName()
// instead of just getAuthor().
$relCol .= $column->getPhpName();
} elseif ($fk->getForeignTableName() == $fk->getTable()->getName()) {
// self referential foreign key
if ($reverseOnSelf) {
$relCol .= $column->getPhpName();
} else {
$relCol .= $fk->getTable()->getColumn($foreignColumnName)->getPhpName();
}
}
}
if ($relCol != '') {
$relCol = 'RelatedBy' . $relCol;
}
return $relCol;
}
示例13: addPKRefFKSet
/**
* Adds the method that sets a one-to-one related referrer fkey.
* This is for one-to-one relationships special case.
* @param string &$script The script will be modified in this method.
* @param ForeignKey $refFK The referencing foreign key.
*/
protected function addPKRefFKSet(&$script, ForeignKey $refFK)
{
$tblFK = $refFK->getTable();
$joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable());
$className = $joinedTableObjectBuilder->getObjectClassname();
$varName = $this->getPKRefFKVarName($refFK);
$script .= "
/**
* Sets a single $className object as related to this object by a one-to-one relationship.
*
* @param $className \$l $className
* @return ".$this->getObjectClassname()." The current object (for fluent API support)
* @throws PropelException
*/
public function set".$this->getRefFKPhpNameAffix($refFK, $plural = false)."($className \$v)
{
\$this->$varName = \$v;
// Make sure that that the passed-in $className isn't already associated with this object
if (\$v->get".$this->getFKPhpNameAffix($refFK, $plural = false)."() === null) {
\$v->set".$this->getFKPhpNameAffix($refFK, $plural = false)."(\$this);
}
return \$this;
}
";
} // addPKRefFKSet
示例14: getDropForeignKeyDDL
public function getDropForeignKeyDDL(ForeignKey $fk)
{
if ($fk->isSkipSql()) {
return;
}
$pattern = "\nALTER TABLE %s DROP FOREIGN KEY %s;\n";
return sprintf($pattern, $this->quoteIdentifier($fk->getTable()->getName()), $this->quoteIdentifier($fk->getName()));
}
示例15: addPKRefFKSet
/**
* Adds the method that sets a one-to-one related referrer fkey.
* This is for one-to-one relationships special case.
* @param string &$script The script will be modified in this method.
* @param ForeignKey $refFK The referencing foreign key.
*/
protected function addPKRefFKSet(&$script, ForeignKey $refFK)
{
$tblFK = $refFK->getTable();
$joinedTableObjectBuilder = $this->getNewObjectBuilder($refFK->getTable());
$className = $joinedTableObjectBuilder->getObjectClassname();
$varName = $this->getPKRefFKVarName($refFK);
$script .= "\r\n\t/**\r\n\t * Sets a single {$className} object as related to this object by a one-to-one relationship.\r\n\t *\r\n\t * @param {$className} \$l {$className}\r\n\t * @return " . $this->getObjectClassname() . " The current object (for fluent API support)\r\n\t * @throws PropelException\r\n\t */\r\n\tpublic function set" . $this->getRefFKPhpNameAffix($refFK, $plural = false) . "({$className} \$v)\r\n\t{\r\n\t\t\$this->{$varName} = \$v;\r\n\r\n\t\t// Make sure that that the passed-in {$className} isn't already associated with this object\r\n\t\tif (\$v->get" . $this->getFKPhpNameAffix($refFK, $plural = false) . "() === null) {\r\n\t\t\t\$v->set" . $this->getFKPhpNameAffix($refFK, $plural = false) . "(\$this);\r\n\t\t}\r\n\r\n\t\treturn \$this;\r\n\t}\r\n";
}