Every repository with this icon (
Every repository with this icon (
| name | age | message | |
|---|---|---|---|
| |
MIT-LICENSE | ||
| |
README | ||
| |
README.rdoc | ||
| |
named_scope.php |
NamedScopeBehavior
This is a behavior for CakePHP that allows use of named scopes with model’s find() method. What it does it translating defined scopes to conditions before extecuting find query.
Installation
Download and place named_scope.php file in app/models/behaviors folder of your CakePHP application.
Usage
Example of User model:
$actsAs = array(
'NamedScope' => array(
'activated' => array('User.activated' => 1),
'online' => array('date_add(User.last_activity, interval 5 minute) > now()')
)
);
Then in your controller (or anywhere else) you can do:
$this->User->find(‘all’, array(‘scopes’ => array(‘activated’)));
which is an equivalent to:
$this->User->find(‘all’, array(‘conditions’ => array(‘User.activated’ => 1)));
You can use many scopes at once and mix them with usually defined conditions:
$this->User->find(‘all’, array(‘condtions’ => array(‘User.admin’ => 1), ‘scopes’ => array(‘activated’, ‘online’)))
If you have associated models (hasOne or belongsTo) and they have named scopes defined you can use them all in one find query: $this->User->find(‘all’, array(‘scopes’ => (‘activated’, ‘Group.admins’))) // assuming that User belongsTo Group and Group model has ‘admins’ named scope defined.
Scopes works also with pagination (in your controller):
$paginate = array(
'User' => array(
'order' => 'created ASC',
'limit' => 20,
'scopes' => array('online', 'activated')
)
)
Copyright
Copyright © 2008 Michal Szajbe (codetunes.com) and netguru (netguru.pl), released under the MIT license








