Link Search Menu Expand Document

class Pike\Db

Piken tietokanta-, ja tietokantakyselyjen rakentajaluokka. Handlaa vain yhtä tietokantayhteyttä kerrallaan, tukee MySQL / MariaDB-, ja Sqlite -ajureita.

Synopsis

class Db {

    /* Metodit */
    public __construct ( object|array<string, mixed> $config )
    public open ( array $pdoOptions = [], bool $doSwallowExceptionError = true ) : bool
    public fetchAll ( string $query, mixed[] $params = null, ...$fetchConfig ) : mixed[]
    public fetchOne ( string $query, mixed[] $params = null, ...$fetchConfig ) : object|array<string, mixed>|null
    public exec ( string $query, mixed[] $params = null ) : int
    public beginTransaction ( void ) : int
    public commit ( void ) : int
    public rollBack ( void ) : int
    public runInTransaction ( Closure $fn ) : mixed
    public lastInsertId ( void ) : string
    public attr ( int $attr, mixed $value = null ) : mixed|bool
    public setConfig ( object|array<string, mixed> $config ) : void
    public static makeInsertQParts ( object|array<string, mixed> $data, string[] $columnsToInclude = [] ) : array
    public static makeBatchInsertQParts ( array<int, object|array<string, mixed>> $data, string[] $columnsToInclude = [] ) : array
    public static makeUpdateQParts ( object|array<string, mixed> $data, string[] $columnsToInclude = [] ) : array
    public static columnify ( string $columnNameCandidate ) : string
}

Metodit

__construct()

Luo uuden tietokantaolion ja asettaa tietokantayhteyden avaamisessa käytettävän konfiguraation. Yhteys tulee avata erikseen metodilla open().

Signature

public function __construct ( object|array<string, mixed> $config )

Esimerkit

Katso myös Tietokanta > Käyttöönotto.

$db = new Db(['db.host' => '127.0.0.1', 'db.user' => 'user']);

open()

Avaa tietokantayhteyden, tai heittää PikeExceptionin mikäli se ei onnistunut.

Signature

public function open ( array $pdoOptions = [], bool $doSwallowExceptionError = true ) : bool

Esimerkit

Katso myös Tietokanta > Käyttöönotto.

$ok = $db->open([\PDO::ATTR_EMULATE_PREPARES => 0], false);

fetchAll()

Hakee useita rivejä tietokannasta, tai heittää PikeExceptionin.

Signature

public function fetchAll ( string $query, mixed[] $params = null, ...$fetchConfig ) : mixed[]

Esimerkit

Katso myös. Tietokanta > Tiedon hakeminen.

$q = 'SELECT * FROM `foo` WHERE `id` < ?';
$assocs = $db->fetchAll($q, ['10']);
$myClasses = $db->fetchAll($q, ['10'], PDO::FETCH_CLASS, MyClass::class);

fetchOne()

Hakee yhden rivin tietokannasta, tai heittää PikeExceptionin.

Signature

public function fetchOne ( string $query, mixed[] $params = null, ...$fetchConfig ) : object|array<string, mixed>|null

Esimerkit

Katso myös. Tietokanta > Tiedon hakeminen.

$q = 'SELECT * FROM `foo` WHERE `id` = ?';
$assoc = $db->fetchOne($q, ['1']);
$myClass = $db->fetchOne($q, ['1'], PDO::FETCH_CLASS, MyClass::class);

exec()

Ajaa preparoidun tietokantakyselyn ja palauttaa sen tuloksena muuntuneiden rivien lukumäärän (rowCount), tai heittää PikeExceptionin.

Signature

public function exec ( string $query, mixed[] $params = null ) : int

Esimerkit

Katso myös:

$numAffectedRows = $db->exec('INSERT INTO `foo` VALUES (?, ?)', ['1', 'foo']);
$numAffectedRows = $db->exec('UPDATE `foo` SET `field1` = ? WHERE `id` = ?', ['foo', '1']);

beginTransaction()

Aloittaa transaktion, tai ei tee mitään mikäli sellainen oli jo aloitettu.

Signature

public function beginTransaction ( void ) : int

Esimerkit

$db->beginTransaction();

commit()

Hyväksyy uloimman transaktion (transaktio, joka aloitetaan ensimmäisenä) jälkeen suoritetut tietokantaoperaatiot, tai ei tee mitään mikäli transaktio ei ollut ulommainen.

Signature

public function commit ( void ) : int

Esimerkit

$db->commit();

rollBack()

Kumoaa uloimman transaktion (transaktio, joka aloitetaan ensimmäisenä) jälkeen suoritetut tietokantaoperaatiot, tai ei tee mitään mikäli transaktio ei ollut ulommainen.

Signature

public function rollBack ( void ) : int

Esimerkit

$db->rollBack();

runInTransaction()

Ajaa funktion transaktiossa.

Signature

public function runInTransaction ( Closure $fn ) : mixed

Esimerkit

$myValue = $db->runInTransaction(function () use ($db) {
    $db->exec(...);
    $db->exec(...);
    return 'my-value';
});

lastInsertId()

Ks. PDO->lastInsertId().

Signature

public function lastInsertId ( void ) : string

Esimerkit

$id = $db->lastInsertId();

attr()

Palauttaa tai asettaa tietokantayhteys-attribuutin.

Signature

public function attr ( int $attr, mixed $value = null ) : mixed|bool

Esimerkit

Katso myös:

$db->attr(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$errMode = $db->attr(PDO::ATTR_ERRMODE);

setConfig()

Asettaa tietokantayhteyden avaamisessa käytettävän konfiguraation.

Signature

public function setConfig ( object|array<string, mixed> $config ) : void

Esimerkit

$db->setConfig(['db.host' => '127.0.0.1', 'db.user' => 'user']);

makeInsertQParts()

Luo komponentit yhden rivin INSERT-kyselyä varten.

Signature

public static function makeInsertQParts ( object|array<string, mixed> $data, string[] $columnsToInclude = [] ) : array

Esimerkit

Katso myös Tietokanta > Tiedon insertointi.

[$qList, $values, $columns] = $db->makeInsertQParts(['field' => 'value', 'field2' => 'value2']);
$db->exec("INSERT INTO `foo` ({$columns}) VALUES ({$qList})", $values);

makeBatchInsertQParts()

Luo komponentit useamman rivin INSERT-kyselyä varten.

Signature

public static function makeBatchInsertQParts ( array<int, object|array<string, mixed>> $data, string[] $columnsToInclude = [] ) : array

Esimerkit

Katso myös Tietokanta > Tiedon insertointi.

[$qGroups, $values, $columns] = $db->makeBatchInsertQParts([
    ['field' => 'value1'],
    ['field' => 'value2'],
]);
$db->exec("INSERT INTO `foo` ({$columns}) VALUES {$qGroups}", $values);

makeUpdateQParts()

Luo komponentit UPDATE-kyselyä varten.

Signature

public static function makeUpdateQParts ( object|array<string, mixed> $data, string[] $columnsToInclude = [] ) : array

Esimerkit

Katso myös Tietokanta > Tiedon päivittäminen.

[$columns, $values] = $db->makeUpdateQParts(['field' => 'value']);
$db->exec("UPDATE `foo` SET {$columns} WHERE `id` = ?", array_merge($values, ['1']));

columnify()

Palauttaa merkkijonon, jota voi turvallisesti käyttää mm. SQL-taulun sarakkeen nimenä.

Signature

public static function columnify ( string $columnNameCandidate ) : string

Esimerkit

$columnified = $db->columnify('DROP table users'); // '`DROPtableusers`'

Copyright © 2019-2021 ut4