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:
- Tietokanta > Tiedon insertointi.
- Tietokanta > Tiedon päivittäminen.
- Tietokanta > Tiedon poistaminen.
$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`'