Ouzo\Db\ModelQueryBuilderHelper::associateRelationsWithAliases PHP Method

associateRelationsWithAliases() public static method

public static associateRelationsWithAliases ( array $relations, string | string[] | null $aliases ) : RelationWithAlias[]
$relations array
$aliases string | string[] | null
return RelationWithAlias[]
    public static function associateRelationsWithAliases(array $relations, $aliases)
    {
        $aliases = Arrays::toArray($aliases);
        if (count($relations) < count($aliases)) {
            throw new InvalidArgumentException("More aliases than relations in join");
        }
        $relationWithAliases = array();
        foreach ($relations as $index => $relation) {
            $alias = Arrays::getValue($aliases, $index, Arrays::getValue($aliases, $relation->getName()));
            $relationWithAliases[] = new RelationWithAlias($relation, $alias);
        }
        return $relationWithAliases;
    }

Usage Example

 /**
  * @test
  */
 public function shouldAssociateRelationsWithAliasesByRelationNames()
 {
     //given
     $relation1 = new Relation('relation1', 'Test\\OrderProduct', 'id', 'id_product', false);
     $relation2 = new Relation('relation2', 'Test\\OrderProduct', 'id', 'id_product', false);
     //when
     $relationToAlias = ModelQueryBuilderHelper::associateRelationsWithAliases(array($relation1, $relation2), array('relation2' => 'r2'));
     //then
     Assert::thatArray($relationToAlias)->containsExactly(new RelationWithAlias($relation1, null), new RelationWithAlias($relation2, 'r2'));
 }
All Usage Examples Of Ouzo\Db\ModelQueryBuilderHelper::associateRelationsWithAliases