Сортировка pdoResources по столбцу из другой таб
Сразу прошу прощение за формулировку :)
В общем мне нужно сортировать выводимые ресурсы по паарметру который привязан к id ресурса, но только в другой таблице в БД, вот она prntscr.com/bkc3d5
Соотсветсвтенно связываются они по modx_site_content.id = modx_star_rating.star_id
Но как это писать в вызов pdoResources, что бы можно было сортировать по столбцу modx_star_rating.star_id
я не знаю и даже не знаю как начать.
В логе что то типа
Буду благодарен за помощь и подсказки
В общем мне нужно сортировать выводимые ресурсы по паарметру который привязан к id ресурса, но только в другой таблице в БД, вот она prntscr.com/bkc3d5
Соотсветсвтенно связываются они по modx_site_content.id = modx_star_rating.star_id
Но как это писать в вызов pdoResources, что бы можно было сортировать по столбцу modx_star_rating.star_id
я не знаю и даже не знаю как начать.
В логе что то типа
0.0010281: Could not process query, error #1054: Unknown column 'vote_total' in 'order clause'
даёт понять что такой столбец не выбирается и надо как то сообщить сниппету что бы включил в выборку таблицу modx_star_rating и добавил условие WHERE modx_site_content.id = modx_star_rating.star_idБуду благодарен за помощь и подсказки
Комментарии: 2
Если у вас уже есть объект, то переходите к leftJoin, иначе создайте схему и объектную модель, например вручную или с помощью migx (проще, на мой взгляд) или cmp generator .
Схема будет приблизительно такая:
Или же напишите сниппет для выборки из таблицы.
Схема будет приблизительно такая:
<?xml version="1.0" encoding="UTF-8"?>
<model package="StarRating" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" version="1.1">
<object class="StarRating" table="star_rating" extends="xPDOSimpleObject">
<field key="star_id" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false"/>
<field key="group_id" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false"/>
<field key="vote_total" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false"/>
<field key="vote_count" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false"/>
</object>
</model>
Затем используйте параметр &leftJoin&leftJoin=`{
"StarRating": {
"class": "StarRating",
"on": "modResource.id = StarRating.star_id"
},
}`
и сортируйте).Или же напишите сниппет для выборки из таблицы.
В общем я пошёл для себя проще, дописал строчку в сниппет — пишу текущую переменную при вызове ресурса в тв, а дальше уже как обычно сортирую по тв. Но всё равно спасибо, надо бы разобраться с этим.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.