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

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

protected getSortedJoins ( $table, &$leftJoinDependency, &$tableJoins, &$finalJoins )
    protected function getSortedJoins($table, &$leftJoinDependency, &$tableJoins, &$finalJoins)
    {
        if (isset($this->expandingJoins[$table])) {
            $path = implode("' => '", array_map(function ($value) {
                return $this->reservedTableNames[$value];
            }, array_merge(array_keys($this->expandingJoins), [$table])));
            throw new Nette\InvalidArgumentException("Circular reference detected at left join conditions (tables '{$path}').");
        }
        if (isset($tableJoins[$table])) {
            $this->expandingJoins[$table] = TRUE;
            if (isset($leftJoinDependency[$table])) {
                foreach ($leftJoinDependency[$table] as $requiredTable) {
                    if ($requiredTable === $table) {
                        continue;
                    }
                    $this->getSortedJoins($requiredTable, $leftJoinDependency, $tableJoins, $finalJoins);
                }
            }
            if ($tableJoins[$table]) {
                foreach ($tableJoins[$table] as $requiredTable => $tmp) {
                    if ($requiredTable === $table) {
                        continue;
                    }
                    $this->getSortedJoins($requiredTable, $leftJoinDependency, $tableJoins, $finalJoins);
                }
            }
            $finalJoins += $tableJoins[$table];
            $this->parameters['joinConditionSorted'] += isset($this->parameters['joinCondition'][$this->reservedTableNames[$table]]) ? [$table => $this->parameters['joinCondition'][$this->reservedTableNames[$table]]] : [];
            unset($tableJoins[$table]);
            unset($this->expandingJoins[$table]);
        }
    }