Класс lmbSimpleDb - небольшой фасад для пакета, который позволяет упростить выполнение простых CRUD запросов.
Конструктор класса lmbSimpleDb принимает объект подключения к базе данных (connection):
lmb_require('limb/dbal/src/lmbSimpleDb.class.php'); $connection = lmbToolkit :: instance()->getDefaultDbConnection(); $db = new lmbSimpleDb($connection);
Более простым способом создания объекта lmbSimpleDb с подключением к базе данных по-умолчанию является вызов метода lmbDBAL :: db(), например:
$db = lmbDBAL :: db();
Или, если вы используете частное подключение:
$db = lmbDBAL :: db($my_connection);
lmbSimpleDb содержит следующие методы для выполнения select-запросов:
(см. раздел Driver об интерфейсах lmbDbRecordSet и lmbDbRecord)
В качестве $criteria можно передавать как часть $sql кода, так и объект Criteria.
Например:
$db = new lmbSimpleDb($conn); $rs = $db->select('article', 'author_id = '. (int)$author_id); // или $rs = db->select('article', new lmbSQLCriteria('author_id = '. (int)$author_id));
Строковые данные в целях безапасности имеет смысл квотировать:
$rs = $db->select('article', 'title LIKE '. $db->quote("%" . $search_title));
В качестве $order передается массив вида array('field' ⇒ 'order_type'), например:
$db = new lmbSimpleDb($conn); $rs = $db->select('article', '', array('year' => 'DESC', 'title' => 'ASC'));
Зачастую вместо параметра $order удобнее все же использовать метод sort() самого record_set-а:
$db = new lmbSimpleDb($conn); $rs = $db->select('article')->sort(array('year' => 'DESC', 'title' => 'ASC'))->paginate(0, 5);
Здесь мы выбрали первые 5 записей из таблицы article отсортировав из по году по убыванию и по загововку в алфавитном порядке.
Опять же вместо lmbSimpleDb :: count() можно использовать метод count() record_set-а, например:
$db = new lmbSimpleDb($conn); $number = $db->count('article', 'author_id = '. $author_id); // или можно $number = $db->select('article', 'author_id = '. $author_id)->count();
lmbSimpleDb содержит следующие методы для выполнения модификационных запросов:
Примеры:
$db->delete('news'); $db->delete('article', new lmbSQLCriteria('author_id = '. $author_id)); echo 'Removed ' . $db->countAffected() . ' articles of this author'; $db->insert('user', array('login' => $login, 'password' => $password)); $db->update('user', array('password' => 'other_secret'), 'id = ' . $user_id);
lmbSimpleDb также содержит alias-ы методов для управления транзакциями:
А также методы:
Например:
$db = new lmbSimpleDb($conn); $rs = $db->select('user', 'login = '. $db->quote($login));
Обсуждение