Nette\Database\Table\SqlBuilder::parseJoinConditions PHP Метод

parseJoinConditions() защищенный Метод

protected parseJoinConditions ( &$joins, $joinConditions )
    protected function parseJoinConditions(&$joins, $joinConditions)
    {
        $tableJoins = $leftJoinDependency = $finalJoinConditions = [];
        foreach ($joinConditions as $tableChain => &$joinCondition) {
            $fooQuery = $tableChain . '.foo';
            $requiredJoins = [];
            $this->parseJoins($requiredJoins, $fooQuery);
            $tableAlias = substr($fooQuery, 0, -4);
            $tableJoins[$tableAlias] = $requiredJoins;
            $leftJoinDependency[$tableAlias] = [];
            $finalJoinConditions[$tableAlias] = preg_replace_callback($this->getColumnChainsRegxp(), function ($match) use($tableAlias, &$tableJoins, &$leftJoinDependency) {
                $requiredJoins = [];
                $query = $this->parseJoinsCb($requiredJoins, $match);
                $queryParts = explode('.', $query);
                $tableJoins[$queryParts[0]] = $requiredJoins;
                if ($queryParts[0] !== $tableAlias) {
                    foreach (array_keys($requiredJoins) as $requiredTable) {
                        $leftJoinDependency[$tableAlias][$requiredTable] = $requiredTable;
                    }
                }
                return $query;
            }, $joinCondition);
        }
        $this->parameters['joinConditionSorted'] = [];
        if (count($joinConditions)) {
            while (reset($tableJoins)) {
                $this->getSortedJoins(key($tableJoins), $leftJoinDependency, $tableJoins, $joins);
            }
        }
        return $finalJoinConditions;
    }