havvg / UniqueKeyInstancePoolingBehavior

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

UniqueKeyInstancePoolingBehavior

Build Status

See the Propel documentation on how to install a third party behavior

Usage

Just add the following XML tag in your schema.xml file:

<behavior name="unique_key_instance_pooling" />

For example:

<database name="default" defaultIdMethod="native">
    <table name="user">
        <column name="id" type="integer" autoIncrement="true" primaryKey="true" />
        <column name="email" type="varchar" size="255" required="true" primaryString="true" />

        <behavior name="unique_key_instance_pooling" />

        <unique>
            <unique-column name="email" />
        </unique>
    </table>
</database>

The behavior will add two methods for each unique key:

  1. A static key generator; from the example this would be createUniquePoolingKeyForEmail. This method returns the key used when accessing the instances pool.

  2. The findOneByEmail method will be actually implemented. This method wraps the original method around instance pooling.

<?php

$email = 'mail@example.com';

/*
 * This retrieves the user from the database.
 * The hydrated object will be put into the instances pool under a special key.
 */
$user = UserQuery::create()->findOneByEmail($email);

// .. more code ..

/*
 * As this user is in the instances pool of the behavior,
 * the cached object will be returned without accessing the database.
 */
$user = UserQuery::create()->findOneByEmail($email);

About

License:MIT License


Languages

Language:PHP 100.0%