/** * @param $onTableAliasName * @return null|string */ protected function resolveJoinsForDerivedRelationViaCastedUpModelThatIsManyToMany($onTableAliasName) { assert('is_string($onTableAliasName)'); $opposingRelationTableName = $this->modelAttributeToDataProviderAdapter->getOpposingRelationTableName(); $relationJoiningTableAliasName = $this->joinTablesAdapter->addLeftTableAndGetAliasName($this->modelAttributeToDataProviderAdapter->getManyToManyTableNameForDerivedRelationViaCastedUpModel(), "id", $onTableAliasName, self::resolveForeignKey($onTableAliasName)); $onTableAliasName = $this->joinTablesAdapter->addLeftTableAndGetAliasName($opposingRelationTableName, self::resolveForeignKey($opposingRelationTableName), $relationJoiningTableAliasName, 'id'); return $onTableAliasName; }