Уникальные значения поля
19 Августа 2019 11:34 (Редактировано: 19 Августа 2019 19:47)
Здесь рассмотрен пример получения уникальных значений поля по дополнительным полям CMF modX. Вместо $field указывем название поля
SELECT tv_c.value
FROM modx_site_content AS c
INNER JOIN modx_site_tmplvar_contentvalues AS tv_c
ON c.id = tv_c.contentid
INNER JOIN modx_site_tmplvars AS tv
ON tv.id = tv_c.tmplvarid AND tv.name = '$field'
WHERE c.published = 1 AND c.deleted = 0
AND c.parent = '24'
GROUP BY tv_c.value
Далее можно оформить это в сниппет и передавать в параметре сниипета $field. Сниппет будет выводить option'ы с уникальными значениями.
$field = $modx->getOption('field', $scriptProperties, '');
$stmnt = $modx->prepare("
SELECT tv_c.value
FROM modx_site_content AS c
INNER JOIN modx_site_tmplvar_contentvalues AS tv_c
ON c.id = tv_c.contentid
INNER JOIN modx_site_tmplvars AS tv
ON tv.id = tv_c.tmplvarid AND tv.name = '$field'
WHERE c.published = 1 AND c.deleted = 0
AND c.parent = '24'
GROUP BY tv_c.value"
);
$stmnt->execute();
$row = $stmnt->fetchAll(PDO::FETCH_ASSOC);
foreach($row as $item) {
echo '<option value="' . $item['value'] . '">' . $item['value'] . '</option>';
}