Класс wSql предоставляет объектно-ориентированный метод для построения SQL-запросов. Этот класс содержит свойства и методы для формирования отдельных частей sql-запроса (select, from, where и др). Подробнее о конструкторе запросов описано в п..
Описание методов
При использовании класса необходимо подключить файл класса, создать его екземпляр и далее работать с созданным объектом:
include_once(SYS_BASE_PATH.'main/classes/wsql.class.php'); $q = new wSql;
sqlReset()
public function sqlReset()
Очищает составные части sql-запроса.
$q-> sqlReset();
distinct()
public function distinct($val = '')
Позволяет выбрать уникальные значения при использовании оператора SELECT. Метод добавляет к запросу ключевое слово DISTINCT. Например, эти части запроса будут работать аналогично:
SELECT DISTINCT name… $q->distinct('a.name_en');
select()
public function select($field = '', $label = '', $pars = '')
Формирует часть запроса после оператора SELECT. Параметр $field
$q->select('a.objid AS id'); //поле с алиасом $q->select('a.name_en'); //мультиязычное поле $q->select('s.id', $parser->gt('id')); // $parser->gt('id') - заголовок для колонки таблицы $q->select('s.qty', $parser->gt('quantity'), array('edit' => 1)); //'edit' – возможность редактирования поля $q->select('g.name AS itemname', $parser->gt('name'), array('lang' => 1)); //'lang' – код (Id) языка
lselect()
public lselect($field = '', $label = '')
Формирует часть запроса с мультиязычными полями после оператора SELECT.
$q->lselect('a.name'); $q->lselect('a.name', $parser->gt('name'));
from()
public function from($tab = '', $ar = false)
Формирует часть запроса после оператора FROM.
$q->from('sys_objects a');
Выполнение запроса для нескольких таблиц БД:
$w->q->select('o.id', $parser->gt('id')); $w->q->select('o.creaton', $parser->gt('createdon')); $w->q->select('o.description', $parser->gt('description'), array('html' => 1)); $w->q->from('wcrmp_case_com o'); $w->q->from('sys_objects t'); $w->q->from('sys_objects s'); $w->q->where("o.id<>0"); $w->q->where("o.caseid=".$cat_id); $w->q->where('o.userid=t.objid'); $w->q->where('o.casestate=s.objid'); $w->q->orderby('o.id DESC');
where()
public function where($cond = '', $ar = false)
Формирует часть запроса после оператора WHERE.
$q->where("a.objid<>'0'"); $q->where("a.objtype='sys_elements_pages'");
groupby()
function groupby($cond = '', $lang = false)
Формирует часть запроса после оператора GROUP BY.
$q->groupby('u.objid');
lgroupby()
public function lgroupby($cond = '')
Формирует часть запроса c мультиязычным полем после оператора GROUP BY.
$q->lgroupby('u.name');
having()
public function having($cond = '', $lang = false)
Формирует часть запроса после оператора HAVING.
$q->having('id=1 or id=2');
lhaving()
public function lhaving($cond = '')
Формирует часть запроса c мультиязычным полем после оператора HAVING.
$q->lhaving('a.name ="John" or a.name="Glen"');
orderby()
public function orderby($cond = '', $lang = false)
Формирует часть запроса после оператора ORDER BY.
$q->orderby('a.name_en');
lorderby()
public function lorderby($cond = '')
Формирует часть запроса c мультиязычным полем после оператора ORDER BY.
$q->lorderby('o.name');
limit()
public function limit($cond = '')
Формирует часть запроса после оператора LIMIT.
getSql()
public function getSql()
Получает готовую строку sql-запроса.
$q->select('p.objid'); $q->lselect('p.name as title'); $q->lselect('p.str1 AS longtitle'); $q->from('sys_objects p'); $q->where("p.objtype='sys_elements_pages'"); $q->where('p.bool3=1'); $q->orderby('p.creaton DESC'); print $q->getSql();
getCols()
public function getCols()
Получает данные о колонках, которые входят в запрос.
$q->select('p.objid'); $q->lselect('p.name as title'; $q->lselect('p.str1 AS longtitle',); $q->from('sys_objects p'); $q->where("p.objtype='sys_elements_pages'"); $q->where('p.bool3=1'); $q->orderby('p.creaton DESC'); print_r($q->getCols());
parseSql()
public function parseSql($sql = '', $calc_numrows = false)
Разбирает на составные части sql-запрос.
$sql = "SELECT DISTINCT s.objid, s.name_".$parser->lang_suff." FROM sys_objects s, wcrmp_tickets t WHERE (s.objtype='wcrmp_t_dirs_states') AND (s.objid<>'0') AND (s.objid=t.state) AND (s.objid<>'wcrmp_t_states_closed') ORDER BY s.name_".$parser->lang_suff; print_r($q->parseSql($sql));
extra_where()
public function extra_where($cond = '')
Дополнительная часть запроса, которая добавляется в конец выражения WHERE. В основном используется в отчетах.
$extra_where = 'o.id<>'0''; $q->extra_where($extra_where);