We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 47635
    • 33 Posts
    Hello everyone. I'm trying to select all messages from the topic (A), and then select the messages for the current page (B), but both results are the same.

    /* A */
    $query = $modx->newQuery($whereTable[$where]);
    $messagesArrayAll = $forumTopicObject->getMany($whereTable[$where], $query);
    // count: 11
    
    /* B */
    $query->limit(10, $pageId * 10); // count, offset
    $messagesArray = $forumTopicObject->getMany($whereTable[$where], $query);
    // count: 11


    What did i do wrong? [ed. note: yasya_popkin last edited this post 12 years, 2 months ago.]
      • 4172
      • 5,888 Posts
      see, which sql-queries was generated with:

      /* A */
      $query = $modx->newQuery($whereTable[$where]);
      $query->prepare();echo $query->toSql();echo '<br /><br />';
      $messagesArrayAll = $forumTopicObject->getMany($whereTable[$where], $query);
      // count: 11
       
      /* B */
      $query->limit(10, $pageId * 10); // count, offset
      $query->prepare();echo $query->toSql();echo '<br /><br />';
      $messagesArray = $forumTopicObject->getMany($whereTable[$where], $query);
      count: 11
        -------------------------------

        you can buy me a beer, if you like MIGX

        http://webcmsolutions.de/migx.html

        Thanks!
        • 47635
        • 33 Posts
        /* All */
        $query = $modx->newQuery($whereTable[$where]);
        $query->prepare();
        $messagesArrayAll = $forumTopicObject->getMany($whereTable[$where], $query);
        echo $query->toSQL().'<hr>';
        
        /* Limited */
        $query = $modx->newQuery($whereTable[$where]);
        $query->limit(10, $pageId * 10); // count, offset
        $query->prepare();
        $messagesArray = $forumTopicObject->getMany($whereTable[$where], $query);
        echo $query->toSQL();


        A:
        SELECT `ForumMessages`.`id` AS `ForumMessages_id`, ..., `ForumMessages`.`hidden` AS `ForumMessages_hidden` 
        FROM `modx_forum_messages` AS `ForumMessages` 


        B:
        SELECT `ForumMessages`.`id` AS `ForumMessages_id`, ...,  `ForumMessages`.`hidden` AS `ForumMessages_hidden` 
        FROM `modx_forum_messages` AS `ForumMessages` 
        LIMIT 10, 10  
          • 47635
          • 33 Posts
          It's not good solution but works for me. Temporary solution:
          /* All */
          $queryAll = $modx->newQuery($whereTable[$where]);
          $queryAll->where(array(
              'topic_id' => $forumTopicObject->get('id'),
                                )
                          );
          $messagesArrayAll = $modx->getCollection($whereTable[$where], $queryAll);
          
          /* Limited */
          $query = $modx->newQuery($whereTable[$where]);
          $query->limit(10, $pageId * 10); // count, offset
          $messagesArray = $forumTopicObject->getMany($whereTable[$where], $query);

          Criteria duplication confuses me.