Как вывести данные из базы данных?

Приветствую

Полазил по сети со своим вопросом — кто что и как пишет, вариантов много, но хочется узнать правильный, наименее ресурсоемкий. Подскажите пожалуйста решение с примером, если можно, а также что почитать.

Вводные данные

В БД есть таблица my_table.
В этой таблице есть поля: id, name, tip, value.
1, капуста, красная, 500
2, морковь, корейская, 200
3, редиска, вонючая, 50
и так далее
В ресурсе есть простое дополнительное текстовое поле (tv_field)
В этом поле я указываю id записей из таблицы и все это должно вывестись на страницу в каком-то оформлении, к примеру, так:
<div>
    <ul>
        <li>
            <span>капуста</span>
            <span>красная</span>
            <span>500</span>
        </li>
        <li>
            <span>морковь</span>
            <span>корейская</span>
            <span>200</span>
        </li>
        <li>
            <span>редиска</span>
            <span>вонючая</span>
            <span>50</span>
        </li>
    </ul>
</div>
Подскажите пожалуйста правильную реализацию.
weranda
13 февраля 2019, 17:24
modx.pro
221
+1

Комментарии: 6

Павел Романов
13 февраля 2019, 19:52
2
+2
Используйте Rowboat.

<ul>
    [[Rowboat?
    &table=`my_table`
    &tpl=`item_tpl`
    &where=`{ "id":"[[*tv_field]]" }`
    ]]
</ul>

Ну и в чанке item_tpl:
<li>
    <span>[[+name]]</span>
    <span>[[+tip]]</span>
    <span>[[+value]]</span>
</li>
    weranda
    13 февраля 2019, 21:42
    0
    Павел, штука офигенная, но не получается вывести несколько разных ID. Если в поле пишу одно значение (1), то все выводится, а вот если пишу два через запятую (1,2), то ничего не выводится. Подскажите пожалуйста как выйти из этой ситуации!?
    Пробовал в where прописать id вручную в JSON, но все равно не выводит:
    &where=`{ "id":["1","2"] }`
weranda
13 февраля 2019, 22:30
0
Вопрос в догонку: а не эффективнее ли написать свой сниппет? Насколько знаю, просто делается запрос в БД и выводится через шаблон, но как это правильно сделать — вопрос!
Владимир
14 февраля 2019, 10:13
0
проще написать свой сниппет, через CMP Generator создать модель и тд и работать через getObject(getCollection), либо прямой выборкой из БД аля
SELECT * FROM my_table
    weranda
    14 февраля 2019, 10:17
    0
    Владимир, так про то и спрашиваю)
      Владимир
      14 февраля 2019, 10:21
      0
      Выбираете один и двух вариантов выше, далее парсите получившийся массив данных, запихивая это все в чанк, пример чанка выше есть.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
6