예제 #1
0
 /**
  * @param $onTableAliasName
  * @return null|string
  */
 protected function resolveJoinsForDerivedRelationViaCastedUpModelThatIsManyToMany($onTableAliasName)
 {
     assert('is_string($onTableAliasName)');
     $opposingRelationModelClassName = $this->modelAttributeToDataProviderAdapter->getOpposingRelationModelClassName();
     $opposingRelationTableName = $this->modelAttributeToDataProviderAdapter->getOpposingRelationTableName();
     $relationJoiningTableAliasName = $this->joinTablesAdapter->addLeftTableAndGetAliasName($this->modelAttributeToDataProviderAdapter->getManyToManyTableNameForDerivedRelationViaCastedUpModel(), "id", $onTableAliasName, self::resolveForeignKey($opposingRelationTableName));
     $onTableAliasName = $this->joinTablesAdapter->addLeftTableAndGetAliasName($opposingRelationTableName, self::resolveForeignKey($opposingRelationModelClassName), $relationJoiningTableAliasName, 'id');
     return $onTableAliasName;
 }
예제 #2
0
 /**
  * @param $onTableAliasName
  * @param bool $canUseFromJoins
  * @return null|string
  */
 protected function resolveJoinsForDerivedRelationViaCastedUpModel($onTableAliasName, $canUseFromJoins = true)
 {
     assert('is_string($onTableAliasName)');
     assert('is_bool($canUseFromJoins)');
     //First cast up
     $onTableAliasName = $this->resolveJoinsForDerivedRelationViaCastedUpModelThatIsCastedUp($onTableAliasName, $canUseFromJoins);
     //Second build relation across to the opposing model
     $onTableAliasName = $this->resolveJoinsForDerivedRelationViaCastedUpModelThatIsManyToMany($onTableAliasName);
     //Third cast down if necessary
     if ($this->modelAttributeToDataProviderAdapter->isDerivedRelationViaCastedUpModelDifferentThanOpposingModelClassName()) {
         $opposingRelationModelClassName = $this->modelAttributeToDataProviderAdapter->getOpposingRelationModelClassName();
         $derivedRelationModelClassName = $this->modelAttributeToDataProviderAdapter->getDerivedRelationViaCastedUpModelClassName();
         $onTableAliasName = $this->resolveAndProcessLeftJoinsForAttributeThatIsCastedDownOrUp($opposingRelationModelClassName, $derivedRelationModelClassName, $onTableAliasName);
     }
     return $onTableAliasName;
 }