Этот код работает:
1 <?
2
5 require( '/var/www/Propel/runtime/lib/Propel.php' );
6 // Initialize Propel with the runtime configuration
7 Propel::init("/home/foo/Projects/bar/classes/orm/build/conf/myconfig-conf.php");
8 // Add the generated 'classes' directory to the include path
9 set_include_path( $_SERVER['DOCUMENT_ROOT'] . "/classes/orm/build/classes/" . get_include_path());
10
11 $PQ = new ProjectsQuery();
12 $projects = ProjectsQuery::create()->find();
13 print_r( $projects );
15
16 ?>
Однако, если я помещаю этот же код внутри класса или функции (я буду использовать функцию для этого примера), я получаю сообщение об ошибке, и объекты не print_r
1 <?
2
3 require( '/var/www/Propel/runtime/lib/Propel.php' );
4 // Initialize Propel with the runtime configuration
5 Propel::init("/home/foo/Projects/bar/classes/orm/build/conf/myconfig-conf.php");
6 // Add the generated 'classes' directory to the include path
7 set_include_path( $_SERVER['DOCUMENT_ROOT'] . "/classes/orm/build/classes/" . get_include_path());
8
9 public function foo()
10 {
11 $PQ = new ProjectsQuery();
12 $projects = ProjectsQuery::create()->find();
13 print_r( $projects );
14 }
15 ?>
Ошибка, которую я получаю в файле журнала, говорит
[Ср. 08 фев. 03:03:02 2012] [error] [client xxxx] Неустранимая ошибка PHP: необработанное исключение 'PDOException' с сообщением 'SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 Ошибка в ваш синтаксис SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'FROM' в строке 1 'в /var/www/Propel/runtime/lib/query/ModelCriteria.php:1284\nStack trace: \ n # 0 /var/www/Propel/runtime/lib/query/ModelCriteria.php (1284): PDOStatement-> execute () \ n # 1 /var/www/Propel/runtime/lib/query/ModelCriteria.php(1137) : ModelCriteria-> doSelect (Object (PropelPDO)) \ n # 2 /home/foo/Projects/bar/models/Projects.php(12): ModelCriteria-> find () \ n # 3 / home / foo / Projects / bar / controllers / Projects.php (11): foo () \ n # 4 / home / foo / Project s / bar / project-lists.php (6): Проекты -> __ construct () \ n # 5 {main} \ n \ nСледующее исключение 'PropelException' с сообщением 'Невозможно выполнить инструкцию SELECT [SELECT FROM] [wrapped: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 Ошибка в синтаксисе SQL; проверьте руководство, соответствующее yo, в /var/www/Propel/runtime/lib/query/ModelCriteria.php в строке 1287
Может кто-нибудь с большим опытом работы с Propel ORM сказать мне, как я могу использовать propel в классе или функции. Только возможность использовать это первым способом, который я упомянул, не сработает. И я просто использую прямой php. Никаких рамок или чего-либо еще.