We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 24067
    • 16 Posts
    Well, as recommended I am trying to use xPDO but find myself in a position where not documentation could be found.
    I have a custom table layout with a master table for members that has a primary key member_id and some other fields.
    When I try to access the table using:
        $modx->addPackage('memberManager',$modx->getOption('core_path') . 'components/project/model/');
        $memberQuery = $modx->newQuery('projectMember');
        $count = $modx->getCount('projectMember', $memberQuery);
    
        $memberQuery->sortby('`projectMember`.`last_name`','ASC');
        $memberQuery->limit(20, 0);
    
        $members = $modx->getCollection('projectMember', $memberQuery);
        $output  = 'Total Records: ' . $count . '<br/>';
        $output .= 'Debugging: ' . $memberQuery->toSQL() . '<br/>';
        foreach ($members as $member) {
            $output .= $member->get('member_id') . ' -- ' . $member->get('first_name') . '<br/>';
        }
        return $output;
    


    I get following error:
     
    [2010-11-26 22:54:38] (ERROR @ /manager/index.php) Error 42S22 executing statement: 
    Array
    (
        [0] => 42S22
        [1] => 1054
        [2] => Unknown column 'projectMember.id' in 'field list'
    )
    


    Trying to add a select fails with a blank page from the manager.
        $memberQuery->select('`projectMember`.`member_id`, `projectMember`.`first_name`');
    


    The query build is:
    SELECT `projectMember`.`id` AS `projectMember_id`, `projectMember`.`member_id` AS `projectMember_member_id` [...] FROM `project_member` AS `projectMember` ORDER BY `projectMember`.`last_name` ASC LIMIT 20 
    


    When I add an ’id’ column to the table layout it works.

    The schema contains:
    <?xml version="1.0" encoding="UTF-8"?>
    <model package="memberManager" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" phpdoc-package="memberManager" phpdoc-subpackage="model">
        <object class="projectMember" table="project_member" extends="xPDOSimpleObject">
            <field key="member_id" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="" index="pk" />
    
      • 21257 MODX Staff
      • 730 Posts
      Hi purefield,

      You’re extending xPDOSimpleObject, which is basically an extension of xPDOObject that adds a primary key named ’id’. So the model automatically looks for an ’id’ field.
      If you just extend xPDOObject instead, what you have should work.
        Mike Schell
        Lead Developer, MODX Cloud
        Email: [email protected]
        GitHub: https://github.com/netProphET/
        Twitter: @mkschell
        • 3749
        • 24,544 Posts
        Try this:

        $sortby = \'last_name\';
        $sortbyAlias =  \'projectMember\';
        $memberQuery->sortby("`{$sortbyAlias}`.`{$sortby}`", 'ASC');
          Did I help you? Buy me a beer
          Get my Book: MODX:The Official Guide
          MODX info for everyone: http://bobsguides.com/modx.html
          My MODX Extras
          Bob's Guides is now hosted at A2 MODX Hosting
          • 24067
          • 16 Posts
          netProphET => that did the trick - thank you.
            • 24067
            • 16 Posts
            BobRay => sorting works now as well after making the other change. So thank you for your input.