本文整理汇总了PHP中Illuminate\Database\Eloquent\Relations\Relation::getRelated方法的典型用法代码示例。如果您正苦于以下问题:PHP Relation::getRelated方法的具体用法?PHP Relation::getRelated怎么用?PHP Relation::getRelated使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Illuminate\Database\Eloquent\Relations\Relation
的用法示例。
在下文中一共展示了Relation::getRelated方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: __construct
public function __construct(array $config, ModelManager $modelManager, Model $model, EloquentRelation $eloquentRelation, FieldFactory $fieldFactory)
{
$this->checkNameConfig($config);
$this->name = $config['name'];
$this->slug = $config['name'];
$this->relatedModel = $model;
$this->eloquentRelation = $eloquentRelation;
$this->fieldFactory = $fieldFactory;
$this->modelManager = $modelManager;
$this->config = $config;
$this->setup();
$this->modelAbstractor = \App::make('Anavel\\Crud\\Contracts\\Abstractor\\ModelFactory')->getByClassName(get_class($this->eloquentRelation->getRelated()), $this->config);
}
示例2: verifyRelation
protected function verifyRelation(ReflectionMethod $method, Relation $relationship)
{
$expectedRelatedModel = $this->relatedModel === get_class($relationship->getRelated());
$expectedRelationName = get_class($relationship) === $this->type;
$expectedReturnAnnotation = $this->getReturnAnnotation($method) === $this->type;
return $expectedRelationName && $expectedRelatedModel && $expectedReturnAnnotation;
}
示例3: 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;
}
示例4: deleteAllRelatedExcept
/**
* @param Relation $relation
* @param array $excluded_ids
*/
public static function deleteAllRelatedExcept(Relation $relation, $excluded_ids = [])
{
$related = $relation->getRelated();
$key_name = $related->getKeyName();
$query = $relation->getQuery();
if (count($excluded_ids) > 0) {
$query->whereNotIn($key_name, $excluded_ids);
}
$query->delete();
}
示例5: 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);
}
}
示例6: __construct
public function __construct(array $config, ModelManager $modelManager, Model $model, EloquentRelation $eloquentRelation, FieldFactoryContract $fieldFactory)
{
$this->checkNameConfig($config);
$this->name = $config['name'];
$this->slug = $config['name'];
$this->relatedModel = $model;
$this->eloquentRelation = $eloquentRelation;
$this->fieldFactory = $fieldFactory;
$this->modelManager = $modelManager;
$this->config = $config;
$this->setup();
$relatedModelClassName = get_class($this->eloquentRelation->getRelated());
$relatedmodelRelationsConfig = [];
foreach (config('anavel-crud.models') as $modelConfig) {
if (is_array($modelConfig) && array_key_exists('model', $modelConfig) && $relatedModelClassName == $modelConfig['model']) {
if (array_key_exists('relations', $modelConfig)) {
$relatedmodelRelationsConfig['relations'] = $modelConfig['relations'];
}
}
}
$this->modelAbstractor = \App::make('Anavel\\Crud\\Contracts\\Abstractor\\ModelFactory')->getByClassName(get_class($this->eloquentRelation->getRelated()), $relatedmodelRelationsConfig);
}
示例7: getRelationshipWheres
/**
* Sets up the existing relationship wheres.
*
* @param \Illuminate\Database\Eloquent\Relations\Relation $relationship
* @param string $tableAlias
* @param string $pivotAlias
* @param string $pivot
*
* @return string
*/
public function getRelationshipWheres($relationship, $tableAlias, $pivotAlias = null, $pivot = null)
{
//get the relationship model
$relationshipModel = $relationship->getRelated();
//get the query instance
$query = $relationship->getQuery()->getQuery();
//get the connection instance
$connection = $query->getConnection();
//one element of the relationship query's wheres is always useless (it will say pivot_table.other_id is null)
//depending on whether or not softdeletes are enabled on the other model, this will be in either position 0
//or 1 of the wheres array
array_splice($query->wheres, method_exists($relationshipModel, 'getDeletedAtColumn') ? 1 : 0, 1);
//iterate over the wheres to properly alias the columns
foreach ($query->wheres as &$where) {
//alias the where columns
$where['column'] = $this->aliasRelationshipWhere($where['column'], $tableAlias, $pivotAlias, $pivot);
}
$sql = $query->toSql();
$fullQuery = $this->interpolateQuery($sql, $connection->prepareBindings($query->getBindings()));
$split = explode(' where ', $fullQuery);
return isset($split[1]) ? $split[1] : '';
}
示例8: joinParameters
/**
* Build join parameters.
*
* @param Relation $relation
* @return array
*/
protected function joinParameters(Relation $relation)
{
return [$relation->getRelated()->getTable(), $relation->getQualifiedParentKeyName(), '=', $relation->getForeignKey()];
}
示例9: 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()];
}
}
示例10: getModelForRelation
/**
* Returns FQN for related model.
*
* @param Relation $relation
* @return Model
*/
protected function getModelForRelation(Relation $relation)
{
return $relation->getRelated();
}