protected function recursiveJointures(\Asgard\Db\DAL $dal, $jointures, \Asgard\Entity\Definition $definition, $table) {
		$alias = null;
		if(is_array($jointures)) {
			foreach($jointures as $relation=>$v) {
				#jointure type
				if(preg_match('/^[^ ]+join /', $relation, $matches)) {
					$type = trim($matches[0]);
					$relation = preg_replace('/^[^ ]* /', '', $relation);
				}
				else
					$type = 'leftjoin';
				if(!is_numeric($relation)) {
					$relationName = $relation;
					if(strpos($relationName, ' '))
						list($relationName, $alias) = explode(' ', $relationName);
					else
						$alias = null;
					$relation = $this->dataMapper->relation($definition, $relationName);
					$this->jointure($dal, $relation, $alias, $table, $type);

					$tableAlias = $alias ? $alias:$relationName;

					$this->recursiveJointures($dal, $v, $relation->getTargetDefinition(), $tableAlias);
				}
				else
					$this->recursiveJointures($dal, $v, $definition, $table);
			}
		}
		else {
			$relation = $jointures;
			#jointure type
			if(preg_match('/^[^ ]+join /', $relation, $matches)) {
				$type = trim($matches[0]);
				$relation = preg_replace('/^[^ ]* /', '', $relation);
			}
			else
				$type = 'leftjoin';
			if(strpos($relation, ' '))
				list($relation, $alias) = explode(' ', $relation);
			$relation = $this->dataMapper->relation($definition, $relation);
			$this->jointure($dal, $relation, $alias, $table, $type);
		}
	}
protected function recursiveJointures(\Asgard\Db\DAL $dal, $jointures, \Asgard\Entity\Definition $definition, $table) {
		$alias = null;
		if(is_array($jointures)) {
			foreach($jointures as $relation=>$v) {
				#jointure type
				if(preg_match('/^[^ ]+join /', $relation, $matches)) {
					$type = trim($matches[0]);
					$relation = preg_replace('/^[^ ]* /', '', $relation);
				}
				else
					$type = 'leftjoin';
				if(!is_numeric($relation)) {
					$relationName = $relation;
					if(strpos($relationName, ' '))
						list($relationName, $alias) = explode(' ', $relationName);
					else
						$alias = null;
					$relation = $this->dataMapper->relation($definition, $relationName);
					$this->jointure($dal, $relation, $alias, $table, $type);

					$tableAlias = $alias ? $alias:$relationName;

					$this->recursiveJointures($dal, $v, $relation->getTargetDefinition(), $tableAlias);
				}
				else
					$this->recursiveJointures($dal, $v, $definition, $table);
			}
		}
		else {
			$relation = $jointures;
			#jointure type
			if(preg_match('/^[^ ]+join /', $relation, $matches)) {
				$type = trim($matches[0]);
				$relation = preg_replace('/^[^ ]* /', '', $relation);
			}
			else
				$type = 'leftjoin';
			if(strpos($relation, ' '))
				list($relation, $alias) = explode(' ', $relation);
			$relation = $this->dataMapper->relation($definition, $relation);
			$this->jointure($dal, $relation, $alias, $table, $type);
		}
	}
protected function recursiveJointures ( \ Asgard \ Db \ DAL $ dal , $ jointures , \ Asgard \ Entity \ Definition $ definition , $ table ) { $ alias = null ; if ( is_array ( $ jointures ) ) { foreach ( $ jointures as $ relation => $ v ) { #jointure type
 if ( preg_match ( '/^[^ ]+join /' , $ relation , $ matches ) ) { $ type = trim ( $ matches [ 0 ] ) ; $ relation = preg_replace ( '/^[^ ]* /' , '' , $ relation ) ; } else $ type = 'leftjoin' ; if ( ! is_numeric ( $ relation ) ) { $ relationName = $ relation ; if ( strpos ( $ relationName , ' ' ) ) list ( $ relationName , $ alias ) = explode ( ' ' , $ relationName ) ; else $ alias = null ; $ relation = $ this -> dataMapper -> relation ( $ definition , $ relationName ) ; $ this -> jointure ( $ dal , $ relation , $ alias , $ table , $ type ) ; $ tableAlias = $ alias ? $ alias : $ relationName ; $ this -> recursiveJointures ( $ dal , $ v , $ relation -> getTargetDefinition ( ) , $ tableAlias ) ; } else $ this -> recursiveJointures ( $ dal , $ v , $ definition , $ table ) ; } } else { $ relation = $ jointures ; #jointure type
 if ( preg_match ( '/^[^ ]+join /' , $ relation , $ matches ) ) { $ type = trim ( $ matches [ 0 ] ) ; $ relation = preg_replace ( '/^[^ ]* /' , '' , $ relation ) ; } else $ type = 'leftjoin' ; if ( strpos ( $ relation , ' ' ) ) list ( $ relation , $ alias ) = explode ( ' ' , $ relation ) ; $ relation = $ this -> dataMapper -> relation ( $ definition , $ relation ) ; $ this -> jointure ( $ dal , $ relation , $ alias , $ table , $ type ) ; } }
Performs jointures on the DAL object.

@param \Asgard\Db\DAL            $dal
@param array                     $jointures Array of relations.
@param \Asgard\Entity\Definition $definition The entity class from which jointures are built.
@param string                    $table The table from which to performs jointures.
Performs jointures on the DAL object .