db

Форк
0
/
Schema.php 
63 строки · 1.6 Кб
1
<?php
2

3
namespace Upside\Db\Test;
4

5
use Upside\Db\Schema\CreateTable;
6
use Upside\Db\Schema as BaseSchema;
7
use Upside\Db\Schema\AlterTable;
8

9
class Schema extends BaseSchema
10
{
11
    public function create(string $table, callable $callback)
12
    {
13
        $compiler = $this->connection->schema_compiler();
14

15
        $schema = new CreateTable($table);
16

17
        $callback($schema);
18

19
        return \implode("\n", \array_map(static function ($value) {
20
            return $value['sql'];
21
        }, $compiler->create($schema)));
22
    }
23

24
    public function alter(string $table, callable $callback)
25
    {
26
        $compiler = $this->connection->schema_compiler();
27

28
        $schema = new AlterTable($table);
29

30
        $callback($schema);
31

32
        return \implode("\n", \array_map(static function ($value) {
33
            return $value['sql'];
34
        }, $compiler->alter($schema)));
35
    }
36

37
    public function rename_table(string $table, string $name)
38
    {
39
        $result = $this->connection->schema_compiler()->rename_table($table, $name);
40

41
        return implode("\n", \array_map(static function ($value) {
42
            return $value['sql'];
43
        }, $result));
44
    }
45

46
    public function drop(string $table)
47
    {
48
        $compiler = $this->connection->schema_compiler();
49

50
        return implode("\n", array_map(function ($value) {
51
            return $value['sql'];
52
        }, $compiler->drop($table)));
53
    }
54

55
    public function truncate(string $table)
56
    {
57
        $compiler = $this->connection->schema_compiler();
58

59
        return implode("\n", array_map(function ($value) {
60
            return $value['sql'];
61
        }, $compiler->truncate($table)));
62
    }
63
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.