Modx XPDO не может получить имя таблицы или ошибку класса
Я не могу понять это, я использую modx 2.6 с парой пользовательских таблиц, сервис загружается успешно, и я могу запускать функции из него, как только я получаю что-то из базы данных, я получаю ошибки:
(ERROR @ core/xpdo/xpdo.class.php : 1320) Could not get table class for class: Projects
(ERROR @ core/xpdo/xpdo.class.php : 1289) Could not get table name for class: Projects
(ERROR @ core/xpdo/xpdo.class.php : 762) Projects::getSelectColumns() is not a valid static method.
(ERROR @ core/components/projects/model/projects.class.php : 51) search SQL = SELECT `` FROM AS `Projects` WHERE `Projects`.`id` = '2'
(ERROR @ core/xpdo/xpdo.class.php : 762) Projects::loadCollection() is not a valid static method.
Я проверил и дважды проверил, но не вижу ничего плохого...
вот моя схема (в ядре / компоненты / проекты / модель / проекты / схема /)
<model package="projects" baseClass="xPDOObject" platform="mysql" defaultEngine="InnoDB" version="1.1" >
<object class="Projects" table="projects" extends="xPDOSimpleObject">
<field key="title" dbtype="char" precision="50" phptype="string" null="false" />
<!-- a bunch of fields -->
<field key="published" dbtype="int" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />
<composite alias="projectfiles" class="ProjectFiles" local="id" foreign="project_id" cardinality="many" owner="local" />
</object>
<object class="ProjectFiles" table="project_files" extends="xPDOSimpleObject">
<field key="project_id" dbtype="int" precision="10" phptype="integer" null="false" default="0" index="index" />
<!-- a bunch of fields -->
<field key="published" dbtype="int" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />
<aggregate alias="projects" class="Projects" local="project_id" foreign="id" cardinality="one" owner="foreign" />
</object>
</model>
Вот мой файл класса:
<?php
if (!class_exists('Projects')) {
class Projects {
function __construct(modX & $modx,array $config = array()) {
$this->modx =& $modx;
$this->modx->setLogLevel(xPDO::LOG_LEVEL_ERROR);
$this->modx->setLogTarget('FILE');
setlocale(LC_MONETARY, 'en_CA');
/*
* This does not seem necessary
if (!$this->modx->addPackage('projects',MODX_CORE_PATH.'components/projects/model/','modx_')) {
$this->modx->log(modX::LOG_LEVEL_ERROR,'Problem adding projects package. ');
return '<br />There was a problem adding your package.<br />';
}
*/
}
public function testMe(){
// this works
echo 'test me';
return 'test me';
}
/**
*
* test the class
*
*/
public function testClass(){
$criteria = $this->modx->newQuery('Projects');
$criteria->where(array('id:>=' => 1));
$criteria->prepare();
$sqlstring = $criteria->toSQL();
$this->modx->log(modX::LOG_LEVEL_ERROR, 'search SQL = ' . $sqlstring);
$projects = $this->modx->getCollection('Projects', $criteria);
return;
}
} // end class projects
} // end if not projects
и для хихиканья, файл карты проектов:
<?php
$xpdo_meta_map['Projects']= array (
'package' => 'projects',
'version' => '1.1',
'table' => 'projects',
'extends' => 'xPDOSimpleObject',
'tableMeta' =>
array (
'engine' => 'InnoDB',
),
'fields' =>
array (
'title' => NULL,
'tenderdate' => NULL,
'description' => NULL,
'projecttype' => NULL,
'featured' => 0,
'sqfoot' => 0,
'status' => NULL,
'deleted' => 0,
'published' => 0,
),
<!-- a bunch of fields -->
'composites' =>
array (
'projectfiles' =>
array (
'class' => 'ProjectFiles',
'local' => 'id',
'foreign' => 'project_id',
'cardinality' => 'many',
'owner' => 'local',
),
),
);
Почему я получаю эти ошибки? Я проверил базу данных и таблицы присутствуют с данными, modx_projects и modx_project_files.
Migx умеет читать таблицы и добавлять / удалять данные из них. Почему мой класс проваливается?