Propel Создание проекта -- использование. Пример на русском
Primary tabs
Предположим, что интересующей нас базы ещё не существует.
В корне проекта (там же, где и ранее) создадим файл schema.xml с подобным содержимым (читайте комментарии в xml стиле), в котором находится описание таблиц и связей между ними:
<?xml version="1.0" encoding="UTF-8"?> <database name="bookstore" defaultIdMethod="native"> <table name="book" phpName="Book"> <!-- таблица книг --> <!-- описываем поля таблицы --> <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/> <column name="title" type="varchar" size="255" required="true" /> <column name="isbn" type="varchar" size="24" required="true" phpName="ISBN"/> <column name="publisher_id" type="integer" required="true"/> <column name="author_id" type="integer" required="true"/> <!-- описываем внешний ключ --> <foreign-key foreignTable="publisher" phpName="Publisher" refPhpName="Book"> <reference local="publisher_id" foreign="id"/> </foreign-key> <foreign-key foreignTable="author"> <reference local="author_id" foreign="id"/> </foreign-key> </table> <table name="author" phpName="Author"> <!-- таблица авторов --> <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true"/> <column name="first_name" type="varchar" size="128" required="true"/> <column name="last_name" type="varchar" size="128" required="true"/> </table> <table name="publisher" phpName="Publisher"> <!-- таблица издателей --> <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" /> <column name="name" type="varchar" size="128" required="true" /> </table> </database>
Генерируем SQL по .xml схеме
После чего выполняем команду:
propel sql:build
На винде может потребоваться её альтернатива:
"vendor/bin/propel" sql:build
Генерируем PHP классы по .xml схеме
Там же выполняем:
propel model:build
(или "vendor/bin/propel" model:build )
Файл будут созданы в диреткории generated-classes/ изменять (добавлять собственные методы)
следует только файл модели (напр. Book.php) и файл запросов (напр. BookQuery.php)
-- остальные файлы будут перезаписываться при повторной генерации модели.
Генерируем файл для подлючения к БД во время работы
Для ускорения работы ORM Propel необходимо выполнить ещё одну команду:
"vendor/bin/propel" config:convert
которая создаст (скорее всего в отдельной директории) на основе созданного выше propel.php (конфигурационного файла) файл для подключения к СУБД
Выполняем сгенерированный SQL - разворачиваем таблицы
Команда:
"vendor/bin/propel" sql:insert
Внимание: данный скрипт удалит (с содержимым) существующие таблицы (те что указаны в scheme.xml) и создаст новые, учитывайте это при обновлении схемы.
Чтобы обновить структуру базы после изменения схемы, используйте последоватльено две команды из приведенных выше:
sql:build sql:insert
Подключаем и используем в PHP
После всех проведённых выше действий, загрузить propel можно скриптом формата:
<?php // включаем автозагрузку (которую даёт композер) require_once '/path/to/vendor/autoload.php'; // подключаем Propel require_once '/generated-conf/config.php';
- Log in to post comments
- 3123 reads