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" />