yf_db_utils_helper_create_table class

Fileplugins/db/classes/db/yf_db_utils_helper_create_table.class.php
Use_class('db_utils_helper_create_table', 'classes/db/')

Public properties

PropertyDefaultDescription
None declared in this class.

Public methods 50

add_column

public function add_column($column, array $params)
  • $params array
    public function add_column($column, array $params)
    {
        $this->fields[$column] = $params;
        return $this;
    }
public function big_increments($column, $params = [])
    public function big_increments($column, $params = [])
    {
        return $this->increments($column, ['type' => 'bigint', 'length' => 20] + (array) $params);
    }

big_int

public function big_int($column, $params = [])
    public function big_int($column, $params = [])
    {
        if (is_numeric($params)) {
            $params = ['length' => $params];
        }
        return $this->int($column, ['type' => 'bigint'] + (array) $params);
    }

binary

public function binary($column, $params = [])
    public function binary($column, $params = [])
    {
        return $this->add_column($column, (array) $params + [
            'type' => 'binary',
        ]);
    }

boolean

public function boolean($column, $params = [])
    public function boolean($column, $params = [])
    {
        return $this->add_column($column, (array) $params + [
            'type' => 'tinyint',
            'length' => 1,
        ]);
    }

char

public function char($column, $params = [])
    public function char($column, $params = [])
    {
        if (is_numeric($params)) {
            $params = ['length' => $params];
        }
        return $this->add_column($column, (array) $params + [
            'type' => 'char',
            'length' => ($params['length'] ?? null) ?: 255,
        ]);
    }

date

public function date($column, $params = [])
    public function date($column, $params = [])
    {
        return $this->add_column($column, (array) $params + [
            'type' => 'date',
        ]);
    }

date_time

public function date_time($column, $params = [])
    public function date_time($column, $params = [])
    {
        return $this->add_column($column, (array) $params + [
            'type' => 'datetime',
        ]);
    }

decimal

public function decimal($column, $length = 8, $decimals = 2, $params = [])
    public function decimal($column, $length = 8, $decimals = 2, $params = [])
    {
        return $this->add_column($column, (array) $params + [
            'type' => 'decimal',
            'length' => $length,
            'decimals' => $decimals,
        ]);
    }

double

public function double($column, $params = [])
    public function double($column, $params = [])
    {
        return $this->add_column($column, (array) $params + [
            'type' => 'double',
        ]);
    }

drop_column

public function drop_column($columns)
    public function drop_column($columns)
    {
        if ( ! is_array($columns)) {
            $columns = [$columns];
        }
        foreach ($columns as $column) {
            $this->utils->drop_column($this->_get_table_name(), $column);
        }
        return $this;
    }

drop_foreign

public function drop_foreign($name)
    public function drop_foreign($name)
    {
        $this->utils->drop_foreign_key($this->_get_table_name(), $name);
        return $this;
    }

drop_index

public function drop_index($name)
    public function drop_index($name)
    {
        $this->utils->drop_index($this->_get_table_name(), $name);
        return $this;
    }

drop_primary

public function drop_primary($name = null)
    public function drop_primary($name = null)
    {
        if ( ! $name) {
            $name = 'PRIMARY';
        }
        $this->utils->drop_index($this->_get_table_name(), $name);
        return $this;
    }
public function drop_soft_deletes()
    public function drop_soft_deletes()
    {
        $this->drop_column('deleted_at');
        return $this;
    }
public function drop_timestamps()
    public function drop_timestamps()
    {
        $this->drop_column('created_at');
        $this->drop_column('updated_at');
        return $this;
    }

drop_unique

public function drop_unique($name)
    public function drop_unique($name)
    {
        $this->utils->drop_index($this->_get_table_name(), $name);
        return $this;
    }

enum

public function enum($column, array $allowed, $params = [])
  • $allowed array
    public function enum($column, array $allowed, $params = [])
    {
        return $this->add_column($column, (array) $params + [
            'type' => 'enum',
            'values' => $allowed,
        ]);
    }

float

public function float($column, $params = [])
    public function float($column, $params = [])
    {
        return $this->add_column($column, (array) $params + [
            'type' => 'float',
        ]);
    }

foreign

public function foreign($columns, $ref_table, $ref_columns, $name = null, $params = [])
    public function foreign($columns, $ref_table, $ref_columns, $name = null, $params = [])
    {
        if (is_string($columns)) {
            $columns = [$columns => $columns];
        }
        if (is_string($ref_columns)) {
            $ref_columns = [$ref_columns => $ref_columns];
        }
        if ( ! $name) {
            $name = $ref_table . '_' . implode('_', $ref_columns);
        }
        if ($this->for_create) {
            $this->foreign_keys[$name] = [
                'columns' => $columns,
                'ref_table' => $ref_table,
                'ref_columns' => $ref_columns,
            ] + (array) $params;
        } else {
            $this->utils->add_foreign_key($this->_get_table_name(), $name, $columns, $this->_get_table_name($ref_table), $ref_columns, $params);
        }
        return $this;
    }

increments

public function increments($column, $params = [])
    public function increments($column, $params = [])
    {
        return $this->add_column($column, (array) $params + [
            'type' => 'int',
            'length' => 10,
            'auto_inc' => true,
            'nullable' => false,
            'unsigned' => true,
        ])->primary($column);
    }

index

public function index($columns, $name = null, $params = [])
    public function index($columns, $name = null, $params = [])
    {
        if (is_string($columns)) {
            $columns = [$columns => $columns];
        }
        if ( ! $name) {
            $name = implode('_', $columns);
        }
        if ($this->for_create) {
            $this->indexes[$name] = [
                'type' => 'index',
                'columns' => $columns,
            ];
        } else {
            $this->utils->add_index($this->_get_table_name(), $name, $columns, $params);
        }
        return $this;
    }

int

public function int($column, $params = [])
    public function int($column, $params = [])
    {
        if (is_numeric($params)) {
            $params = ['length' => $params];
        }
        return $this->add_column($column, (array) $params + [
            'type' => 'int',
        ]);
    }

integer

public function integer($column, $params = [])

Alias for int.

    public function integer($column, $params = [])
    {
        if (is_numeric($params)) {
            $params = ['length' => $params];
        }
        return $this->int($column, $params);
    }

long_text

public function long_text($column, $params = [])
    public function long_text($column, $params = [])
    {
        return $this->text($column, ['type' => 'longtext'] + (array) $params);
    }

medium_int

public function medium_int($column, $params = [])
    public function medium_int($column, $params = [])
    {
        if (is_numeric($params)) {
            $params = ['length' => $params];
        }
        return $this->int($column, ['type' => 'mediumint'] + (array) $params);
    }

medium_text

public function medium_text($column, $params = [])
    public function medium_text($column, $params = [])
    {
        return $this->text($column, ['type' => 'mediumtext'] + (array) $params);
    }
public function nullable_timestamps($params = [])
    public function nullable_timestamps($params = [])
    {
        $this->timestamp('created_at', ['nullable' => true] + (array) $params);
        $this->timestamp('updated_at', ['nullable' => true] + (array) $params);
        return $this;
    }

option

public function option($name, $value)
    public function option($name, $value)
    {
        $this->table_options[$name] = $value;
        return $this;
    }

primary

public function primary($columns, $name = null, $params = [])
    public function primary($columns, $name = null, $params = [])
    {
        if (is_string($columns)) {
            $columns = [$columns => $columns];
        }
        if ( ! $name) {
            $name = 'PRIMARY';
        }
        if ($this->for_create) {
            $this->indexes[$name] = [
                'type' => 'primary',
                'columns' => $columns,
            ];
        } else {
            $this->utils->add_index($this->_get_table_name(), $name, $columns, ['type' => 'primary'] + (array) $params);
        }
        return $this;
    }

rename

public function rename($to)

Rename current table.

    public function rename($to)
    {
        $this->utils->rename_table($this->_get_table_name(), $this->_get_table_name($to));
        return $this;
    }

rename_column

public function rename_column($from, $to)
    public function rename_column($from, $to)
    {
        $this->utils->rename_column($this->_get_table_name(), $from, $to);
        return $this;
    }

render

public function render()
    public function render()
    {
        return $this->utils->_ddl_create_sql([
            'name' => $this->_get_table_name(),
            'fields' => $this->fields,
            'indexes' => $this->indexes,
            'foreign_keys' => $this->foreign_keys,
            'options' => $this->table_options,
        ]);
    }

small_int

public function small_int($column, $params = [])
    public function small_int($column, $params = [])
    {
        if (is_numeric($params)) {
            $params = ['length' => $params];
        }
        return $this->int($column, ['type' => 'smallint'] + (array) $params);
    }

soft_deletes

public function soft_deletes($params = [])
    public function soft_deletes($params = [])
    {
        return $this->timestamp('deleted_at', ['nullable' => true] + (array) $params);
    }

string

public function string($column, $params = [])

Alias.

    public function string($column, $params = [])
    {
        return $this->varchar($column, $params);
    }

text

public function text($column, $params = [])
    public function text($column, $params = [])
    {
        return $this->add_column($column, (array) $params + [
            'type' => 'text',
        ]);
    }

time

public function time($column, $params = [])
    public function time($column, $params = [])
    {
        return $this->add_column($column, (array) $params + [
            'type' => 'time',
        ]);
    }

timestamp

public function timestamp($column, $params = [])
    public function timestamp($column, $params = [])
    {
        return $this->add_column($column, (array) $params + [
            'type' => 'timestamp',
        ]);
    }

timestamps

public function timestamps($params = [])
    public function timestamps($params = [])
    {
        $this->timestamp('created_at', $params);
        $this->timestamp('updated_at', $params);
        return $this;
    }

tiny_int

public function tiny_int($column, $params = [])
    public function tiny_int($column, $params = [])
    {
        if (is_numeric($params)) {
            $params = ['length' => $params];
        }
        return $this->int($column, ['type' => 'tinyint'] + (array) $params);
    }

unique

public function unique($columns, $name = null, $params = [])
    public function unique($columns, $name = null, $params = [])
    {
        if (is_string($columns)) {
            $columns = [$columns => $columns];
        }
        if ( ! $name) {
            $name = 'uniq_' . implode('_', $columns);
        }
        if ($this->for_create) {
            $this->indexes[$name] = [
                'type' => 'unique',
                'columns' => $columns,
            ];
        } else {
            $this->utils->add_index($this->_get_table_name(), $name, $columns, ['type' => 'unique'] + (array) $params);
        }
        return $this;
    }
public function unsigned_big_int($column, $params = [])
    public function unsigned_big_int($column, $params = [])
    {
        if (is_numeric($params)) {
            $params = ['length' => $params];
        }
        return $this->big_int($column, ['unsigned' => true] + (array) $params);
    }

unsigned_int

public function unsigned_int($column, $params = [])
    public function unsigned_int($column, $params = [])
    {
        if (is_numeric($params)) {
            $params = ['length' => $params];
        }
        return $this->int($column, ['unsigned' => true] + (array) $params);
    }

varchar

public function varchar($column, $params = [])
    public function varchar($column, $params = [])
    {
        if (is_numeric($params)) {
            $params = ['length' => $params];
        }
        return $this->add_column($column, (array) $params + [
            'type' => 'varchar',
            'length' => ($params['length'] ?? null) ?: 255,
        ]);
    }

Methods starting with _ hooks and helpers; not routable as page actions

__call

public function __call($name, $args)

Catch missing method call.

    public function __call($name, $args)
    {
        return main()->extend_call($this, $name, $args);
    }

__clone

public function __clone()

We cleanup object properties when cloning.

    public function __clone()
    {
        foreach ((array) get_object_vars($this) as $k => $v) {
            $this->$k = null;
        }
    }

__toString

public function __toString(): string
    public function __toString()
    {
        return $this->render();
    }
public function _get_table_name($new_name = '')
    public function _get_table_name($new_name = '')
    {
        return $this->db_name . '.' . $this->utils->db->_fix_table_name($new_name ?: $this->table_name);
    }

_setup

public function _setup($params)
    public function _setup($params)
    {
        foreach ($params as $k => $v) {
            $this->$k = $v;
        }
        return $this;
    }