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;
}
/** * @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')); }