Сортировка pdoResources по столбцу из другой таб

Сразу прошу прощение за формулировку :)

В общем мне нужно сортировать выводимые ресурсы по паарметру который привязан к 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

Буду благодарен за помощь и подсказки
Михаил
24 июня 2016, 06:11
modx.pro
967
0

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

DocentBF
24 июня 2016, 10:42
+1
Если у вас уже есть объект, то переходите к 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"
	},
}`
и сортируйте).
Или же напишите сниппет для выборки из таблицы.
    Михаил
    24 июня 2016, 15:56
    0
    В общем я пошёл для себя проще, дописал строчку в сниппет — пишу текущую переменную при вызове ресурса в тв, а дальше уже как обычно сортирую по тв. Но всё равно спасибо, надо бы разобраться с этим.

    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2