db

Форк
0
/
Database.php 
82 строки · 1.7 Кб
1
<?php
2

3
namespace Upside\Db;
4

5
use Upside\Db\SQL\Insert;
6
use Upside\Db\SQL\InsertStatement;
7
use Upside\Db\SQL\Query;
8
use Upside\Db\SQL\Update;
9

10
class Database
11
{
12
    protected Connection $connection;
13
    protected ?Schema $schema = null;
14

15
    public function __construct(Connection $connection)
16
    {
17
        $this->connection = $connection;
18
    }
19

20
    public function get_connection(): Connection
21
    {
22
        return $this->connection;
23
    }
24

25
    /**
26
     * Returns the query log for this database.
27
     */
28
    public function get_log(): array
29
    {
30
        return $this->connection->get_log();
31
    }
32

33
    /**
34
     * Execute a query in order to fetch or to delete records.
35
     *
36
     * @param array|string $tables Table name or an array of tables
37
     */
38
    public function from(array|string $tables): Query
39
    {
40
        return new Query($this->connection, $tables);
41
    }
42

43
    /**
44
     * Insert new records into a table.
45
     *
46
     * @param array $values An array of values.
47
     */
48
    public function insert(array $values): InsertStatement
49
    {
50
        return (new Insert($this->connection))->insert($values);
51
    }
52

53
    /**
54
     * Update records.
55
     *
56
     * @param string $table Table name
57
     */
58
    public function update(string $table): Update
59
    {
60
        return new Update($this->connection, $table);
61
    }
62

63
    /**
64
     * The associated schema instance.
65
     */
66
    public function schema(): Schema
67
    {
68
        if ($this->schema === null) {
69
            $this->schema = $this->connection->get_schema();
70
        }
71

72
        return $this->schema;
73
    }
74

75
    /**
76
     * Performs a transaction
77
     */
78
    public function transaction(callable $query, mixed $default = null): mixed
79
    {
80
        return $this->connection->transaction($query, $this, $default);
81
    }
82
}
83

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

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

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

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