Sql select vocabulary
Материал из Eludia.
Описание
Специальная версия sql_select_all, выбирающая список хэшей с компонентами id и label, как правило, для отображения выпадающих списков (<select>). Редко используется напрямую, поскольку обычно удобнее применять add_vocabularies.
Опция filter непосредственно копируется в выражение WHERE.
Опция in формирует дополнительный фильтр вида "id IN (...)" в выражении WHERE. В качестве её значения можно использовать строку, ссылку на список или специальное значение, возвращаемое функцией sql.
При указании опции tree используется функция tree_sort и строки списка дополняются отступами, соответствующими уровням вложенности.
Возвращаемое значение — умный (ленивый) список: по умолчанию он содержит лишь специальный объект, хранящий SQL-код запроса. Выборка извлекается при необходимости. Если требуется не весь список, а отдельные записи (что имеет место при показе полей-ссылок в режиме read only), то из БД извлекаются только они.
Синопсис (Perl 5)
$item -> {roles} = sql_select_vocabulary ('roles');
$item -> {users} = sql_select_vocabulary (users => {
label => "CONCAT(f, ' ', LEFT(i, 1), '. ', LEFT (o, 1), '.')",
filter => "id_role = 1",
# in => '1, 2, 5',
# in => [1, 2, 5],
in => sql ('users_groups(id_user)' => [ [id_group => $_REQUEST {_id_group}] ]),
# not_in => sql ('users_groups(id_user)' => [ [id_group => $_REQUEST {_id_group}] ]),
order => "dt_birth",
});
$item -> {rubrics} = sql_select_vocabulary (rubrics => {tree => 1});
| На этой странице упоминается Eludia.php: порт Eludia.pm на PHP. Данный проект был доведён до рабочей бета-версии, однако впоследствии заморожен и в настоящее время не поддерживается. |
Синопсис (PHP)
$item [roles] = sql_select_vocabulary ('roles');
$item [users] = sql_select_vocabulary ('users', array (
label => "CONCAT(f, ' ', LEFT(i, 1), '. ', LEFT (o, 1), '.')",
filter => "id_role = 1",
order => "dt_birth"
));

