Prado\Data\ActiveRecord\Relations\TActiveRecordHasManyAssociation::getAssociationJoin PHP Метод

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

SQL inner join for M-N relationship via association table.
protected getAssociationJoin ( $foreignKeys, $indexValues, $sourceKeys ) : string
Результат string inner join condition for M-N relationship via association table.
    protected function getAssociationJoin($foreignKeys, $indexValues, $sourceKeys)
    {
        $refInfo = $this->getAssociationTable();
        $fkInfo = $this->getForeignTable();
        $refTable = $refInfo->getTableFullName();
        $fkTable = $fkInfo->getTableFullName();
        $joins = array();
        $hasAssociationColumns = count($this->_association_columns) > 0;
        $i = 0;
        foreach ($foreignKeys as $ref => $fk) {
            if ($hasAssociationColumns) {
                $refField = $refInfo->getColumn($this->_association_columns[$i++])->getColumnName();
            } else {
                $refField = $refInfo->getColumn($ref)->getColumnName();
            }
            $fkField = $fkInfo->getColumn($fk)->getColumnName();
            $joins[] = "{$fkTable}.{$fkField} = {$refTable}.{$refField}";
        }
        $joinCondition = implode(' AND ', $joins);
        $index = $this->getCommandBuilder()->getIndexKeyCondition($refInfo, array_keys($sourceKeys), $indexValues);
        return "INNER JOIN {$refTable} ON ({$joinCondition}) AND {$index}";
    }