Ejemplo n.º 1
0
 /**
  * @param $onTableAliasName
  * @return null|string
  */
 protected function resolveJoinsForForARelationAttributeThatIsAHasOne($onTableAliasName)
 {
     assert('is_string($onTableAliasName)');
     $tableJoinIdName = 'id';
     $onTableJoinIdName = $this->modelAttributeToDataProviderAdapter->getColumnName();
     $onTableAliasName = $this->joinTablesAdapter->addLeftTableAndGetAliasName($this->modelAttributeToDataProviderAdapter->getRelationTableName(), $onTableJoinIdName, $onTableAliasName, $tableJoinIdName);
     return $onTableAliasName;
 }
 public function testAllMethodsOnAttributeOnSameModelAndRelatedAttribute()
 {
     $adapter = new RedBeanModelAttributeToDataProviderAdapter('I', 'j', 'jMember');
     $this->assertEquals('I', $adapter->getModelClassName());
     $this->assertEquals('j', $adapter->getAttribute());
     $this->assertEquals('jMember', $adapter->getRelatedAttribute());
     $this->assertEquals('i', $adapter->getModelTableName());
     $this->assertEquals('I', $adapter->getAttributeModelClassName());
     $this->assertEquals('i', $adapter->getAttributeTableName());
     $this->assertEquals('j_id', $adapter->getColumnName());
     $this->assertTrue($adapter->isRelation());
     $this->assertTrue($adapter->hasRelatedAttribute());
     $this->assertEquals('J', $adapter->getRelationModelClassName());
     $this->assertEquals('J', $adapter->getRelatedAttributeModelClassName());
     $this->assertEquals('j', $adapter->getRelationTableName());
     $this->assertEquals('j', $adapter->getRelatedAttributeTableName());
     $this->assertEquals('jmember', $adapter->getRelatedAttributeColumnName());
     $this->assertFalse($adapter->isRelatedAttributeRelation());
 }
Ejemplo n.º 3
0
 protected static function buildJoinForManyToManyRelatedAttributeAndGetWhereClauseData(RedBeanModelAttributeToDataProviderAdapter $modelAttributeToDataProviderAdapter, $joinTablesAdapter)
 {
     assert('$modelAttributeToDataProviderAdapter->getRelatedAttribute() != null');
     assert('$joinTablesAdapter instanceof RedBeanModelJoinTablesQueryAdapter');
     assert('$modelAttributeToDataProviderAdapter->getRelationType() == RedBeanModel::MANY_MANY');
     $relationTableName = $modelAttributeToDataProviderAdapter->getRelationTableName();
     $onTableAliasName = self::resolveShouldAddFromTableAndGetAliasName($modelAttributeToDataProviderAdapter, $joinTablesAdapter);
     $manyToManyTables = array($relationTableName, $onTableAliasName);
     sort($manyToManyTables);
     $relationJoiningTableAliasName = $joinTablesAdapter->addLeftTableAndGetAliasName(implode('_', $manyToManyTables), "id", $onTableAliasName, $modelAttributeToDataProviderAdapter->getAttributeTableName() . '_id');
     //if this is not the id column, then add an additional left join.
     if ($modelAttributeToDataProviderAdapter->getRelatedAttribute() != 'id') {
         $joinTablesAdapter->setSelectDistinctToTrue();
         $relationTableAliasName = $joinTablesAdapter->addLeftTableAndGetAliasName($relationTableName, $relationTableName . '_id', $relationJoiningTableAliasName, 'id');
         $relationAttributeTableAliasName = $relationTableAliasName;
         $whereClauseRelationColumnNameToUse = $modelAttributeToDataProviderAdapter->getRelatedAttributeColumnName();
     } else {
         $whereClauseRelationColumnNameToUse = $relationTableName . '_id';
         $relationAttributeTableAliasName = $relationJoiningTableAliasName;
     }
     return array($relationAttributeTableAliasName, $whereClauseRelationColumnNameToUse);
 }