예제 #1
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;
 }