本文整理汇总了PHP中Illuminate\Database\Eloquent\Relations\Relation::getForeignKey方法的典型用法代码示例。如果您正苦于以下问题:PHP Relation::getForeignKey方法的具体用法?PHP Relation::getForeignKey怎么用?PHP Relation::getForeignKey使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Illuminate\Database\Eloquent\Relations\Relation
的用法示例。
在下文中一共展示了Relation::getForeignKey方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: joinRelated
/**
* Adds a join clause to the current relatedQuery using the relation Object.
*
* @param \Illuminate\Database\Query $query
* @param \Illuminate\Database\Eloquent\Relations\Relation $relation
* @return \Illuminate\Database\Querys
*/
protected function joinRelated($query, $relation)
{
$parentTable = $relation->getParent()->getTable();
$parentKey = $relation->getParent()->getKeyName();
$relatedTable = $relation->getRelated()->getTable();
$fk = $relation->getForeignKey();
$relationType = str_replace('Illuminate\\Database\\Eloquent\\Relations\\', '', get_class($relation));
switch ($relationType) {
case 'BelongsTo':
$query->join($relatedTable, "{$relatedTable}.{$parentKey}", '=', "{$parentTable}.{$fk}");
break;
case 'HasOne':
case 'HasMany':
case 'MorphOne':
case 'MorphMany':
$query->join($relatedTable, "{$parentTable}.{$parentKey}", '=', "{$fk}");
break;
case 'BelongsToMany':
$table = $relation->getTable();
$otherKey = $relation->getOtherKey();
$query->join($table, "{$parentTable}.{$parentKey}", '=', "{$fk}")->join($relatedTable, "{$relatedTable}.{$parentKey}", '=', "{$otherKey}");
break;
default:
break;
}
return $query;
}
示例2: addJoinToQuery
/**
* @param $joinTableAlias
* @param $currentTableAlias
* @param BelongsTo|Relation $relation
* @param string $columnsPrefix
*/
protected function addJoinToQuery($joinTableAlias, $currentTableAlias, Relation $relation, $columnsPrefix = '')
{
$joinTableName = $relation->getRelated()->getTable();
$joinTable = implode(' as ', [$joinTableName, $joinTableAlias]);
$joinLeftCondition = implode('.', [$joinTableAlias, $relation->getOtherKey()]);
$joinRightCondition = implode('.', [$currentTableAlias, $relation->getForeignKey()]);
$this->query->leftJoin($joinTable, $joinLeftCondition, '=', $joinRightCondition);
$columns = $this->getColumns($joinTableName);
$prefix = static::$prefix . $columnsPrefix . $joinTableAlias . '---';
foreach ($columns as $column) {
$this->selectFromQuery($joinTableAlias, $column, $prefix . $column);
}
}
示例3: getJoinKeys
/**
* Get the keys from relation in order to join the table.
*
* @param \Illuminate\Database\Eloquent\Relations\Relation $relation
* @return array
*
* @throws \LogicException
*/
protected function getJoinKeys(Relation $relation)
{
if ($relation instanceof HasOne || $relation instanceof MorphOne) {
return [$relation->getForeignKey(), $relation->getQualifiedParentKeyName()];
}
if ($relation instanceof BelongsTo && !$relation instanceof MorphTo) {
return [$relation->getQualifiedForeignKey(), $relation->getQualifiedOtherKeyName()];
}
$class = get_class($relation);
throw new LogicException("Only HasOne, MorphOne and BelongsTo mappings can be queried. {$class} given.");
}
示例4: buildBelongsToManyRecord
/**
* Parse the fixture data for belongsToManyRecord.
* The current syntax allows for pivot data to be provided
* via a pipe delimiter with colon separated key values.
* <code>
* 'Travis' => [
* 'first_name' => 'Travis',
* 'last_name' => 'Bennett',
* 'roles' => 'endUser|foo:bar, root'
* ]
* </code>
*
* @param string $recordName The name of the relation the fixture is defined on (e.g Travis).
* @param Relation $relation The relationship oject (should be of type belongsToMany).
* @param string $relatedRecord The related record data (e.g endUser|foo:bar or root).
* @return array
*/
protected function buildBelongsToManyRecord($recordName, Relation $relation, $relatedRecord)
{
$pivotColumns = explode('|', $relatedRecord);
$relatedRecordName = array_shift($pivotColumns);
$foreignKeyPieces = explode('.', $relation->getForeignKey());
$foreignKeyName = $foreignKeyPieces[1];
$foreignKeyValue = $this->generateKey($recordName);
$otherKeyPieces = explode('.', $relation->getOtherKey());
$otherKeyName = $otherKeyPieces[1];
$otherKeyValue = $this->generateKey($relatedRecordName);
$fields = "{$foreignKeyName}, {$otherKeyName}";
$values = array($foreignKeyValue, $otherKeyValue);
foreach ($pivotColumns as $pivotColumn) {
list($columnName, $columnValue) = explode(':', $pivotColumn);
$fields .= ", {$columnName}";
$values[] = $columnValue;
}
return array($fields, $values);
}
示例5: joinParameters
/**
* Build join parameters.
*
* @param Relation $relation
* @return array
*/
protected function joinParameters(Relation $relation)
{
return [$relation->getRelated()->getTable(), $relation->getQualifiedParentKeyName(), '=', $relation->getForeignKey()];
}
示例6: getJoinKeys
/**
* Get pair of the keys from relation in order to join the table.
*
* @param \Illuminate\Database\Eloquent\Relations\Relation $relation
* @return array
*
* @throws \LogicException
*/
protected function getJoinKeys(Relation $relation)
{
if ($relation instanceof MorphTo) {
throw new LogicException("MorphTo relation cannot be joined.");
}
if ($relation instanceof HasOneOrMany) {
return [$relation->getForeignKey(), $relation->getQualifiedParentKeyName()];
}
if ($relation instanceof BelongsTo) {
return [$relation->getQualifiedForeignKey(), $relation->getQualifiedOtherKeyName()];
}
if ($relation instanceof BelongsToMany) {
return [$relation->getOtherKey(), $relation->getRelated()->getQualifiedKeyName()];
}
if ($relation instanceof HasManyThrough) {
$fk = $relation->getRelated()->getTable() . '.' . $relation->getParent()->getForeignKey();
return [$fk, $relation->getParent()->getQualifiedKeyName()];
}
}
示例7: preserveKeys
/**
* @param Relation $relation
*/
protected function preserveKeys(Relation $relation)
{
if ($relation instanceof HasOneOrMany) {
$fk = str_replace($this->getTable() . '.', '', $relation->getForeignKey());
$this->attributes[$fk] = $relation->getParentKey();
}
}