havvg / propel-uniquekey-instancepooling-behavior
The UniqueKeyInstancePoolingBehaviors adds additional instance pooling to findOne query methods operating on unique keys.
v0.9.2
2013-04-05 09:51 UTC
Requires
- propel/propel1: >=1.6.4
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-12-21 15:18:58 UTC
README
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:
-
A static key generator; from the example this would be
createUniquePoolingKeyForEmail
. This method returns the key used when accessing the instances pool. -
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);