[size=14]Специфические методы[/size]
Простые, распространенные запросы
[size=12]
Выборка данных (select)[/size]
mixed
DB::
select(string
$table, mixed
$cols, mixed
$where, mixed
$orderBy, mixed
$limit, mixed
$other, int
$fetch);
Указывается имя таблицы и основные разделы запроса SELECT. Разделы можно пропускать. По умолчанию результат возвращается в виде ассоциативного итератора (DB::fIAssoc), можно изменить установкой аргумента $fetch.
DB::select('tbl'); // select * from `tbl` where 1 - выбрать всё.
$cols указывет список столбцов для выборки. Может быть простой строкой или порядковым массивом.
DB::select('tbl', '`one`,`two`'); // select `one`,`two` from `tbl` where 1
DB::select('tbl', Array('one', 'two')); // –//-//-
$where,
$orderBy,
$limit — соответствующие разделы запроса. Если не указываются или false — пропускаются. Могут быть простой строкой или массивом из двух элементов (шаблон, входные данные), обрабатываемым, аналогично плейсхолдерам в DB::query().
DB::select('tbl', '*', '`id`=10'); // select * from `tbl` where `id`=10
DB::select('tbl', '*', Array('?c=?i', Array('id', 20))) // select * from `tbl` where `id`=20
DB::select('tbl', '*', 1, '`ordr` asc', Array('?i, ?i', Array(0, 10))); // select * from 'tbl' where 1 order by `ordr` asc limit 0, 10
$other позволяет добавить другие разделы к запросу:
DB::select('tbl', '*', 1, false, false, 'group by `one`') // select * from `tbl` where 1 group by `one`
[size=12]
Вставка данных (insert)[/size]
int
DB::
insert(string
$table, array
$data);
int
DB::
insert(string
$table, mixed
$cols, mixed
$vals);
Метод можно вызывать в двух форматах. Первым аргументом, как видно, в обоих случаях передается имя таблицы, в которую вставляем. В обоих случаях возвращается значение автоинкремента вставленной строки (если он есть для таблицы).
1. Вставка данных из ассоциативного массива:
$data = Array(
'one' => 11,
'two' => 22
);
$id = DB::insert('tbl', $data); // insert into `tbl` (`one`, `two`) values ("11", "22")
print 'Идентификатор новой строки: '.$id;
2. Отдельное укзание cols и vals
/* Просто строками */
DB::insert('tbl', '`one`, `two`', '1, 2'); // insert into `tbl` (`one`, `two`) values (1, 2)
/* Порядковыми массивами */
DB::insert('tbl', Array('one', 'two'), Array(1, 2)); // insert into `tbl` (`one`, `two`) values ("1", "2")
3. Для вставки нескольких строк одним запросом можно в vals передать массив массивов:
$data = Array(
Array(1, 2),
Array(3, 4),
Array(5, 6),
);
// insert into `tbl` (`one`, `two`) values ("1", "2"), ("3", "4"), ("5", "6")
$id = DB::insert('tbl', Array('one', 'two'), $data);
print 'Последняя вставленная строка: '.$id;
[size=12]
Обновление данных (update)[/size]
int
DB::
update(string
$table, mixed
$set, mixed
$where)
Формат $where аналогичен DB::select().
$set может быть следующим:
/* update `tbl` set `one`=1, `two`=3 where `id`=2 */
DB::update('tbl', '`one`=1, `two`=3', '`id`=2'); // Просто строка
DB::update('tbl', Array('?c=?i, ?c=?i', Array('one', 1, 'two', 3)), '`id`=2'); // Массив (шаблон, данные)
$set = Array(
'one' => 1,
'two' => 3,
);
DB::update('tbl', $set, '`id`=2'); // Ассоциативный массив - столбец => значение
Функция возвращает количество затронутых строк.
[size=12]
Удаление данных (delete)[/size]
int
DB::
delete(string
$table, mixed
$where)
Удаляет из таблицы
$table, строки соответствующие условию
$where (формат аналогичен DB::select). Возвращает количество удаленный строк.
DB::delete('tbl', '`id`>10'); // delete from `tbl` where `id`>10
Update 1.0.1: При пропуске $where, таблица очищается через TRUNCATE. (По наводке
Sergey89)
[size=12]
Подсчет количества записей[/size]
int
DB::
count(string
$table, string
$where [, array
$data]);
print DB::count('tbl'); // select count(*) from `tbl` where 1
print DB::count('tbl', '`id`>3'); // select count(*) from `tbl` where `id`>3
print DB::count('tbl', '?c<?i', Array('id', 7)); // select count(*) from `tbl` where `id`<7
[size=14]Работа с записями по идентификатору[/size]
Для строк в таблицах, имеющих первичный ключ, можно использовать функции данного раздела.
По умолчанию именем столбца-ключа является "id" (константа DB::rowId - можно поменять).
Удобное, если у большинства таблиц первичный ключ имеет одно название.
mixed
DB::
fromId(string
$table, int
$id [, string
$row, string
$rowId])
DB::fromId('tbl', 10); // select * from `tbl` where `id`=10 - получаем ассоциативный массив, соответствующий строке
DB::fromId('tbl', 10, 'one'); // select `one` from `tbl` where `id`=10 - получаем значение столбца 'one' заданной строки
DB::fromId('tbl', 10, false, 'id2'); // select * from `tbl` where `id_other`=10 - меняем имя столбца-ключа
mixed
DB::
deleteId(string
$table, int
$id [, string
$rowId]) - удаление строки по id