Caution: You are browsing the legacy symfony 1.x part of this website.

Как использовать Propel 1.3

автор: Carl Vondrick

Начинаясь с symfony 1.1, теперь возможно легко использовать Propel 1.3 в вашем проекте, используя в своих интересах его усовершенствования скорости, реализацию вложенных множеств, кэширование объектов и многое другое. Наиболее важно то, что Propel 1.3 использует PDO вместо Creole как DBAL, предлагая существенное увеличение производительности.

Установка Propel 1.3 занимает всего несколько минут. Все, что Вы должны сделать, это установить плагин и измененить два файла конфигурации. Читайте далее, чтобы узнать как.

  • Устанавите плагин Propel 1.3 из репозитария symfony:

    $ cd /path/to/project/root/
    $ svn co http://svn.symfony-project.com/plugins/sfPropelPlugin/branches/1.3/plugins/sfPropelPlugin
    
  • Propel 1.3 использует новый формат подключения и таким образом Вы должны соответственно обновить databases.yml. Измените config/databases.yml, чтобы соответствовать нижеследующему примеру, внеся ваши собственные необходимые изменения:

    dev:
      propel:
        param: 
          classname: DebugPDO
     
    all:
      propel:
        class: sfPropelDatabase
        param:
          dsn: mysql:dbname=mydb;host=localhost 
          username: username
          password: password
          encoding: utf8
          persistent: true
          pooling: false
          classname: PropelPDO

    Для обновления DSN прочтите документацию PDO.

  • Мы должны обновить propel.ini, чтобы соответствовать той же самой конфигурации. Найдите три строки в начале config/propel.ini и удалите их:

    propel.database            = mysql
    propel.database.createUrl  = mysql://[email protected]/
    propel.database.url        = mysql://[email protected]/myproject

    Вместо них вставьте следующее:

    propel.database            = mysql
    propel.database.driver     = mysql
    propel.database.createUrl  = mysql://localhost/
    propel.database.url        = mysql:dbname=mydb;host=localhost
    propel.database.user       = username
    propel.database.password   = password
    propel.database.encoding   = utf8

    Убедитесь, что propel.database.url соответствует DSN в шаге 2.

  • Очистите внутренний кэш symfony:

    $ symfony cache:clear
    
  • Propel 1.3 имеет улучшенную модель объекта, таким образом мы должны перестроить модели:

    $ symfony propel:build-model
    

Если это Ваш новый проект, то поздравляю, Вы только что установили Propel 1.3 ! Синтаксис файла schema.yml остался точно таким же, как и в Propel 1.2. Новый API не радикально отличен; фактически, в основном, API остался тем же.

Если Вы модернизируете существующий проект, то возможно у Вас есть еще немного работы, но Вы обнаружите, что большая часть вашего проекта будет работать. Если Вы используете транзакции или функции Creole непосредственно в вашем коде, Вы должны будете вручную перписать код на работу с PDO. Проект Propel имеет полезное руководство по обновлению, которое проведет Вас через процесс обновления. Даже если это Ваш новый проект, то Вам будет полезно поглядеть на это, чтобы узнать обо всех новых возможностях.

Система symfony 1.1 расщепляет своё ядро, таким образом , что Вы с лёгкостью можете использовать любую ORM, какую Вы захотите. Если Propel, не устраивает Вас, попробуйте sfDoctrinePlugin, который является альтернативой Propel и совпадает по производительности с Propel 1.3. Благодаря symfony 1.1, разработчики могут наслаждаться либо улучшенной производительностью Propel 1.3 либо, если необходимо, железной стабильностью и надёжностью Propel 1.2.