public static function resolve($modelClassName)
 {
     $canHaveBeenParentModelClassName = static::resolveParentThatCanHaveBeen($modelClassName);
     if (!$canHaveBeenParentModelClassName) {
         return null;
     }
     $column = RedBeanModelMemberToColumnUtil::resolveForeignKeyColumnMetadata(null, $canHaveBeenParentModelClassName);
     return $column;
 }
 public static function resolve($mixinModelClassName)
 {
     $column = null;
     if (!empty($mixinModelClassName) && @class_exists($mixinModelClassName) && $mixinModelClassName::getCanHaveBean()) {
         $column = RedBeanModelMemberToColumnUtil::resolveForeignKeyColumnMetadata(null, $mixinModelClassName);
         return $column;
     }
     return $column;
 }
 /**
  * @depends testResolveForeignKeyColumnMetadataWithName
  */
 public function testResolveForeignKeyColumnMetadataWithRelatedModelClassName()
 {
     $relatedModelClassName = "EmailTemplate";
     $columnDefinition = RedBeanModelMemberToColumnUtil::resolveForeignKeyColumnMetadata(null, $relatedModelClassName);
     $this->assertNotEmpty($columnDefinition);
     $this->assertCount(6, $columnDefinition);
     $this->assertArrayHasKey('name', $columnDefinition);
     $this->assertEquals('emailtemplate_id', $columnDefinition['name']);
     $this->assertArrayHasKey('type', $columnDefinition);
     $this->assertEquals('INT(11)', $columnDefinition['type']);
     $this->assertArrayHasKey('unsigned', $columnDefinition);
     $this->assertEquals('UNSIGNED', $columnDefinition['unsigned']);
     $this->assertArrayHasKey('notNull', $columnDefinition);
     $this->assertEquals('NULL', $columnDefinition['notNull']);
     // Not Coding Standard
     $this->assertArrayHasKey('collation', $columnDefinition);
     $this->assertNull($columnDefinition['collation']);
     $this->assertArrayHasKey('default', $columnDefinition);
     $this->assertEquals('DEFAULT NULL', $columnDefinition['default']);
     // Not Coding Standard
     $this->assertArrayNotHasKey('length', $columnDefinition);
 }
 /**
  * Generates junction table for a MANY_MANY relationship
  * @param string $modelClassName
  * @param array $relationMetadata
  * @param $messageLogger
  */
 public static function resolve($modelClassName, array $relationMetadata, &$messageLogger)
 {
     if (empty($modelClassName) || !@class_exists($modelClassName) || empty($relationMetadata) || count($relationMetadata) < 2 || $relationMetadata[0] != RedBeanModel::MANY_MANY || !@class_exists($relationMetadata[1])) {
         return;
     }
     $relatedModelClassName = $relationMetadata[1];
     $relationLinkName = null;
     if (isset($relationMetadata[4])) {
         $relationLinkName = $relationMetadata[4];
     }
     $tableName = RedBeanManyToManyRelatedModels::getTableNameByModelClassNames($modelClassName, $relatedModelClassName, $relationLinkName);
     if (ProcessedTableCache::isProcessed($tableName, static::CACHE_KEY)) {
         return;
     }
     $columns = array();
     $columns[] = RedBeanModelMemberToColumnUtil::resolveForeignKeyColumnMetadata(null, $modelClassName);
     $columns[] = RedBeanModelMemberToColumnUtil::resolveForeignKeyColumnMetadata(null, $relatedModelClassName);
     $indexes = static::resolveIndexesByColumnNames($columns);
     $schemaDefinition = array($tableName => array('columns' => $columns, 'indexes' => $indexes));
     CreateOrUpdateExistingTableFromSchemaDefinitionArrayUtil::generateOrUpdateTableBySchemaDefinition($schemaDefinition, $messageLogger);
     ProcessedTableCache::setAsProcessed($tableName, static::CACHE_KEY);
 }
 protected static function setColumnsForPolymorphicLink($relatedModelClassName, $linkName)
 {
     $columns = array();
     $columns[] = RedBeanModelMemberToColumnUtil::resolveForeignKeyColumnMetadata(RedBeanModelMemberToColumnUtil::resolve($linkName) . '_id');
     $columns[] = static::resolvePolymorphicTypeColumnByLinkName($linkName);
     $tableName = $relatedModelClassName::getTableName();
     $polymorphicLinkColumns = GeneralCache::getEntry(static::CACHE_KEY, array());
     $polymorphicLinkColumns[$tableName] = $columns;
     GeneralCache::cacheEntry(static::CACHE_KEY, $polymorphicLinkColumns);
 }