-
Notifications
You must be signed in to change notification settings - Fork 11
Table
Небольшая абстракция над таблицами.
Возвращает объект, связанный с указанной таблицей.
$users = $db->getTable('users'); // Надстройка над таблицей `users`Учитываются префиксы:
$db->setPrefix('prefix_');
$users = $db->getTable('users'); // Надстройка над `prefix_users`Объекты кэшируются:
$users = $db->getTable('users');
$users === $db->getTable('users'); // trueБиблиотека никоим образом не проверяет существование таблицы:
$table = $db->getTable('nonexistent'); // ok
$table->select(); // здесь уже ошибка в запросе$table = $db->getTable('test');
$table->getTableName(); // test
$table->getDB(); // $dbВставляет строку, возвращает автоинкремент, если есть.
$set = [
'name' => 'Вася',
'email' => '[email protected]',
];
$id = $table->insert($set);Пустой массив $set не приводит к ошибке.
Просто ничего не происходит и возвращается NULL.
Вставляет сразу несколько строк.
$sets = [
['name' => 'Вася', 'email' => '[email protected]'],
['name' => 'Петя', 'email' => '[email protected]'],
['name' => 'Гриша', 'email' => '[email protected]'],
];
$table->multiInsert($sets);Если база данных поддерживает расширенный формат вставки (INSERT INTO ... VALUES (..), (..), (..)), то используется он (например, в MySQL).
Если нет (например, SQLite) - в цикле вызывается insert().
Но, так как библиотека никак не определяет возможности текущего движка БД, то придётся вручную передать аргумент $imp.
TRUE - расширенная вставка реализована, FALSE - нет.
Выполняют REPLACE INTO.
Полностью аналогичны insert() и multiInsert().
Выполняет UPDATE.
Формат $where аналогичен плейсхолдеру ?w.
По умолчанию обновляются все строки.
На выходе количество затронутых строк.
$table->update(['x' => 1], ['id' => 5]); // UPDATE `table` SET `x`=1 WHERE `id`=5Удаляет строки. По умолчанию все.
Формат $where аналогичен плейсхолдеру ?w.
$table->delete(['id' => [1, 2, 3]]); // DELETE FROM `table` WHERE `id` IN (1, 2, 3)Возвращает количество удалённых строк.
Очищает таблицу. Не проверяет поддерживает или нет текущий движок эту команду.
Выполняет COUNT() на таблице.
$table->getCount(); // SELECT COUNT(1) FROM `table` - общее количество строк в таблице
$table->getCount('a'); // SELECT COUNT(`a`) ... - где a не NULL
$table->getCount(null, ['x' => 1]); // количество строк, где `x`=1Все параметры не обязательны.
$table->select(); // выбор всего в неизвестном порядке
$table->select('a', ['id' => 5]); // SELECT `a` FROM `table` WHERE `id`=5
$table->select(['a', 'b'], ['id' => [1, 2]]); // SELECT `a`,`b` FROM `table` WHERE `id` IN (1, 2)$cols - см. формат COLS.
$where - см. формат WHERE.
$order - массив: столбец => TRUE (ASC), FALSE (DESC) или имя столбца для ASC:
$table->select($cols, $where, 'col'); // ... ORDER BY `col` ASC
$table->select($cols, $where, ['a' => true, 'b' => false]); // ... ORDER BY `a` ASC, `b` DESC$limit: скаляр или массив [$offset, $limit]:
$table->select($cols, $where, $order, 5); // ... LIMIT 0, 5
$table->select($cols, $where, $order, [5, 10]); // ... LIMIT 5, 10Во всех значениях null приводится к NULL, а не к 0 или пустой строке.