То, что я в итоге сделал, это:
Я получил хорошее представление о том, как генерировать мои модели из «реверса» с помощью Propel. Он создал (как и раньше) файл «schema.xml», чтобы я мог создавать свои модели с помощью.
Также мой файл 'runtime.xml' был неправильным для моих нужд, после сборки я не подключался к нужной базе данных из-за пропуска нескольких тегов, но в целом это довольно просто:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<log>
<ident>unmActTestDB</ident>
<level>7</level>
</log>
<propel>
<datasources default="unmActTestDB">
<datasource id="unmActTestDB">
<adapter>mysql</adapter>
<connection>
<dsn>mysql:host=localhost;dbname=unmActTestDB</dsn>
<user>zend</user>
<password>PASSWORD</password>
<database>unmActTestDB</database>
</connection>
</datasource>
</datasources>
</propel>
</config>
Тег 'dsn' должен быть в вышеуказанном формате с добавлением тегов 'user', 'password' и 'database'. Это исправило мою проблему с ошибками соединения с базой данных. Как указано выше (и здесь), было сгенерировано исключение: «В вашем файле конфигурации времени выполнения нет информации о соединении для источника данных [по умолчанию]»
Что касается загрузки моих моделей, я положил их в свою папку 'library', у меня уже есть автозагрузка этой папки в моем приложении, плюс она казалась хорошим местом для них.
вот изображение моей «обновленной» структуры каталогов:
Обратите внимание на добавление папки 'unmActTestDB' в мой каталог, это мои модели ORM.
Еще одна вещь, которую стоит отметить, это то, что я поместил мои сгенерированные файлы conf в папку application / configs. Теперь они верны, после исправления файла runtime.xml и «перестроения».
В качестве примечания мне пришлось вручную отредактировать файл 'schema.xml' (несколько раз :)) ... В исходной базе данных использовались множественные имена таблиц, поэтому я отредактировал все объявления 'phpname' ( атрибуты на самом деле в теге объявления) должны быть единичными, чтобы я не мог получить доступ к объекту «Пользователи» ... вместо этого теперь я могу получить доступ к объекту «Пользователь». Я сохранил имена таблиц одинаковыми (таблицы множественные, и у меня не возникнет проблем с импортом существующих данных и т. Д.) Это было предложено ответом на другой мой вопрос, см. Здесь Как связаться Объект Propel ORM .
Другим важным изменением, которое я сделал, было добавление объявлений первичного ключа (опять же, атрибутов) для многих представлений SQL в БД, также я добавил атрибуты «только для чтения» и «noSQL» в объявления, так что я буду иметь доступ (через модели Propel) к моим представлениям.
И, если быть точным, и для тех, кто интересуется здесь, это дополнение к моему файлу «bootstrap.php», которое выполняет мой «Propel Init» для меня ...
protected function _initPropel()
{
$this->_logger->info('Bootstrap ' . __METHOD__);
require '../library/propel/Propel.php';
Propel::init(APPLICATION_PATH . '/configs/unmActTestDB-conf.php');
Propel::initialize();
return Propel::getConnection();
}
Другое примечание: '$ this -> _ logger-> info (' Bootstrap '. METHOD );' вызывает мой метод 'logging', который просто сообщает 'firePHP', что этот метод загружен. /Configs/unmActTestDB-conf.php 'вызывает второй' conf 'файл, который генерирует Propel ... и вот' исправленная 'версия этого файла (файл unmActTestDB.conf). Обратите внимание на изменения в' массив соединений.
<?php
// This file generated by Propel 1.5.6 convert-conf target
// from XML runtime conf file runtime-conf.xml
$conf = array (
'datasources' =>
array (
'unmActTestDB' =>
array (
'adapter' => 'mysql',
'connection' =>
array (
'dsn' => 'mysql:host=localhost;dbname=unmActTestDB',
'user' => 'zend',
'password' => 'PASSWORD',
'database' => 'unmActTestDB',
),
),
'default' => 'unmActTestDB',
),
'log' =>
array (
'ident' => 'unmActTestDB',
'level' => '7',
),
'generator_version' => '1.5.6',
);
$conf['classmap'] = include(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'classmap-unmActTestDB-conf.php');
return $conf;
Я ухожу и бегу сейчас! Это был отличный способ, в противном случае я искал и писал ооочень много картографических классов для своего приложения. Propel (в настоящее время) создает более 300 моделей для этого приложения! Плюс базовые классы, это заняло бы у меня вечность ...