We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 39569
    • 9 Posts
    Modx revo 2.2
    Пытаюсь сделать сниппет для получения значения vote_total из базы modx_star_rating:

    $docId = $modx->resource->get('id');
    $result = $modx->db->select("vote_total , $modx->db->getFullTableName( 'modx_star_rating' ) , star_id=docId");
    $vote = $modx->getValue($result);
    echo $vote;
    Получаю либо ошибку синтаксиса о символе "="
    либо
    Call to a member function select() on a non-object
    Как правильно оформить запрос $modx->db->select() ?
    Перечитал все, что нашел, в принципе везде одно и тоже, заставить работать так и не получилось. В чем может быть проблема ?
      • 38454
      • 71 Posts
      Функция select принимает несколько параметров. А Вы передаёте эти параметры в качестве одной строки. Будте внимательнее smiley
        • 39569
        • 9 Posts
        Вы имеете в виду кавычки ? Без них он ругается на =. Вообще я хотел узнать как именно мне использовать функцию селект на данном примере. Чтобы сниппет при этом работал smiley
          • 38454
          • 71 Posts
          $result = $modx->db->select("vote_total", "modx_star_rating", "star_id = $docId");

          Не?
            • 31246 ☆ A M B ☆
            • 428 Posts
            Пытаюсь сделать сниппет для получения значения vote_total из базы modx_star_rating
            - а как вы туда пишите?
            Если своя таблица - то нужно было создать модель.
            Если всё же вы используете расширение CSS StarRating - откройте его, и посмотрите как там выводиться

            P.S. $modx->db-> - такое в Ево, в Рево этого нету.
              Valentin Rasulov - Industrial design (Hobbies - Web Development)
              Development not standard projects on CMF MODx Revolution.
              Small sample of extensions
              • 39569
              • 9 Posts
              Quote from: valikras at Apr 23, 2012, 06:33 PM
              Пытаюсь сделать сниппет для получения значения vote_total из базы modx_star_rating
              - а как вы туда пишите?
              Если своя таблица - то нужно было создать модель.
              Если всё же вы используете расширение CSS StarRating - откройте его, и посмотрите как там выводиться

              P.S. $modx->db-> - такое в Ево, в Рево этого нету.
              На счет P.S. Call to undefined method modX::select() , если использовать $modx-> вместо $modx->db->
              В modx_star_rating пишет как раз CSS StarRating, открывал , как выводится не понял...
                • 39569
                • 9 Posts
                $result = $modx->db->select("vote_total", "modx_star_rating", "star_id = $docId");
                Получаем следующее:
                Call to a member function select() on a non-object in /var/www/go2cafe/data/www/tyrun.fvds.ru/core/cache/includes/elements/modsnippet/61.include.cache.php on line 8
                И соответственно, если:
                $result = $modx->select("vote_total", "modx_star_rating", "star_id = $docId"); , то
                Call to undefined method modX::select() in /var/www/go2cafe/data/www/tyrun.fvds.ru/core/cache/includes/elements/modsnippet/61.include.cache.php on line 8
                  • 38454
                  • 71 Posts
                  $result = $modx->db->select("vote_total", "modx_star_rating", "star_id = $docId"); Получаем следующее:
                  Call to a member function select() on a non-object in /var/www/go2cafe/data/www/tyrun.fvds.ru/core/cache/includes/elements/modsnippet/61.include.cache.php on line 8

                  Извиняюсь — не заметил, что речь идёт о Revo.

                  $result = $modx->select("vote_total", "modx_star_rating", "star_id = $docId"); , то
                  Call to undefined method modX::select() in /var/www/go2cafe/data/www/tyrun.fvds.ru/core/cache/includes/elements/modsnippet/61.include.cache.php on line 8

                  У меня руки всё не доходят до api modx revolution, но, скажем, гугл на это говорит следующее:

                  Обратите внимание, что просто так метод select() работать не будет, то есть нельзя сходу вызвать $modx->getObject() и указать ему какие именно колонки надо извлекать. Запрос надо предварительно объявить с помощью метода $modx->newQuery().


                  А вот и сам урок по xPDO — http://newpg.ru/documentation/modx/modx-revolution/xpdo-urok-4.-select.html
                    • 31246 ☆ A M B ☆
                    • 428 Posts
                    Просто с копировал с снипета
                    $c = $modx->newQuery('starRating');
                    $c->where(array('star_id' => $starId));
                    if ($groupId != '') $c->where(array('group_id' => $groupId));
                    
                    $voteTotal = '';
                    $starRating = $modx->getObject('starRating', $c);
                    if($starRating){
                          $voteTotal =$starRating->vote_total;
                    }
                    return $voteTotal;

                    По поводу уроков, официал не плохие уроки - http://rtfm.modx.com/display/xPDO20/xPDOQuery
                    В своё время не плохо помогли вот эти уроки
                    http://community.modx-cms.ru/blog/documentation/401.html
                    http://community.modx-cms.ru/blog/documentation/448.html
                      Valentin Rasulov - Industrial design (Hobbies - Web Development)
                      Development not standard projects on CMF MODx Revolution.
                      Small sample of extensions
                      • 39569
                      • 9 Posts
                      Всем спасибо, теперь более менее разобрался =) Офтоп конечно , но vote_total мне нужен чтобы сортировать статьи по рейтингу, возможно ли это сделать используя только getResorses , в частности параметр sortby ?