Storm\Drivers\Platforms\Mysql\Syncing\DatabaseModifier::AppendCreateTableStructureQuery PHP Method

AppendCreateTableStructureQuery() protected method

protected AppendCreateTableStructureQuery ( QueryBuilder $QueryBuilder, Storm\Drivers\Base\Relational\Syncing\Traits\ITableTraitManager $TableTraitManager, Storm\Drivers\Base\Relational\Syncing\Traits\IColumnTraitManager $ColumnTraitManager, Table $Table )
$QueryBuilder Storm\Drivers\Base\Relational\Queries\QueryBuilder
$TableTraitManager Storm\Drivers\Base\Relational\Syncing\Traits\ITableTraitManager
$ColumnTraitManager Storm\Drivers\Base\Relational\Syncing\Traits\IColumnTraitManager
$Table Storm\Drivers\Base\Relational\Table
    protected function AppendCreateTableStructureQuery(QueryBuilder $QueryBuilder, Syncing\Traits\ITableTraitManager $TableTraitManager, IColumnTraitManager $ColumnTraitManager, Table $Table)
    {
        $QueryBuilder->AppendIdentifier('CREATE TABLE # ', [$Table->GetName()]);
        $QueryBuilder->Append('(');
        $First = true;
        foreach ($Table->GetColumns() as $Column) {
            if ($First) {
                $First = false;
            } else {
                $QueryBuilder->Append(',');
            }
            $this->AppendFullColumn($QueryBuilder, $ColumnTraitManager, $Column, null, false);
        }
        $TableOptions = [];
        foreach ($Table->GetStructuralTraits() as $StructuralTableTrait) {
            if ($StructuralTableTrait instanceof Tables\CharacterSet || $StructuralTableTrait instanceof Tables\Collation || $StructuralTableTrait instanceof Tables\Engine || $StructuralTableTrait instanceof Relational\Traits\Comment) {
                $TableOptions[] = $StructuralTableTrait;
            } else {
                $QueryBuilder->Append(',');
                $TableTraitManager->AppendDefinition($QueryBuilder, $Table, $StructuralTableTrait);
            }
        }
        $QueryBuilder->Append(')');
        foreach ($TableOptions as $TableOption) {
            $QueryBuilder->Append(',');
            $TableTraitManager->AppendDefinition($QueryBuilder, $Table, $TableOption);
        }
    }