Part of the EllisLab Network
x
 
Create New Page
 View Previous Changes    ( Last updated by George Petsagourakis )

Using Propel as Model

Category:Library -> Database | Category:Library -> External

This document has not been updated sometime so I will try to complete it from the experience I had with Propel. I have been using Propel 1.3 with CI and it has been working great!!

First, install Propel to your system. I recommend using Propel 1.3 as it uses PDO instead of Creole for DB abstraction and the performance gain is as much as 100% against Creole.

URL to the Propel-Framework: http://propel.phpdb.org/trac/

Please follow the steps below to setup Propel in your system:

http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/Installation
http://propel.phpdb.org/trac/wiki/Users/Documentation/1.3/QuickStart

Now you have Propel in your system so let’s try to integrate it with CI!

1. Setup include_path for Propel core and class files
The directory where propel class files are generated needs to be included in include_path environment variable. Also directory for Propel core files can be included if you want to use relative path in the Propel library file for CI.

I have set the include_path in my apache config file so the setting looks like this:

php_value include_path ".:/home/me/htdocs:/home/me/propel_classes:/usr/share/php" 

This means that propel class files are found in “/home/me/propel_classes” and Propel include file “propel/Propel.php” is found under “/usr/share/php”.

Of course you can also set include_path at runtime or in .htaccess.

2. Create Propel library in CI
In your system/application/library directory of CI, create a file called Propel.php with the following content:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

require_once(
'propel/Propel.php');
Propel::init("conf/yourdb-conf.php");

?> 

“yourdb-conf.php” should be altered to whichever database name you have decided to use.

3. (optional) Include Propel in autoload.php
If you don’t want to include the Propel library for every Controller you will be creating you can include that in system/application/config/autoload.php

$autoload['libraries'= array('propel'); 

4. Include Propel class file in controller
You are ready to use Propel now so let’s try to include it in your controller.

For example, Home Controller in system/application/controller/home.php that loads Propel class “Message.php” looks like this:

<?php

class Home extends Controller {

  
function __construct()
  
{
    parent
::Controller();

    require_once(
'Message.php');
  
}

  
function index() {
     
//do whatever you need to do here 
  
}
}

?> 

If you get error from CI not being able to load “Message.php” try giving read permission to the file by running something like “chmod -R 755 /home/me/propel_classes”.

Pretty simple, no? Enjoy!!

Categories: