public function safeJoin(QueryBuilder $qb, $property, $joinedAlias, $autoAlias = true)
    {
        if ($autoAlias) {
            $property = $this->alias($property);
        }
        if (!isset($this->joinMap[$property])) {
            $qb->join($property, $joinedAlias);
            $this->joinMap[$property] = $joinedAlias;
        }

        return $this;
    }
public function safeJoin(QueryBuilder $qb, $property, $joinedAlias, $autoAlias = true)
    {
        if ($autoAlias) {
            $property = $this->alias($property);
        }
        if (!isset($this->joinMap[$property])) {
            $qb->join($property, $joinedAlias);
            $this->joinMap[$property] = $joinedAlias;
        }

        return $this;
    }
public function safeJoin ( QueryBuilder $ qb , $ property , $ joinedAlias , $ autoAlias = true ) { if ( $ autoAlias ) { $ property = $ this -> alias ( $ property ) ; } if ( ! isset ( $ this -> joinMap [ $ property ] ) ) { $ qb -> join ( $ property , $ joinedAlias ) ; $ this -> joinMap [ $ property ] = $ joinedAlias ; } return $ this ; }
Allows you to track which tables you have already joined on this query

@param QueryBuilder $qb
@param $property
@param $joinedAlias
@param bool         $autoAlias

@return $this
Allows you to track which tables you have already joined on this query