У меня возникла такая ситуация, что несколько сайтов с одинаковым движком используют одни и те же таблицы в одной базе данных. Для различения принадлежности записей в бд к сайтам используется поле site_id. Добавлять его к каждому запросу в условия довольно утомительно, поэтому я сделал специальный behavior для этой цели — Scope.

в модели (например, User) добавляем behavior и передаем ему настройки

var $actsAs = array(
    'Scope.Scope' => array(
        'field' => 'site_id',
        'value' => SITE_ID,
    )
);

теперь при вызове функций модели find или save условие будет добавляться автоматически, то есть

$this->User->find('all');

будет эквивалентно

$this->User->find('all', array(
    'conditions' => array(
        'User.site_id' => SITE_ID,
    )
);

Пользоваться, конечно, следует с осторожностью, так как некоторые операции, например updateAll и deleteAll c $cascade=false работают напрямую с источником данных и behavior остается не у дел (deleteAll c $cascade=true будет работать как и ожидается, с подстановкой параметров).

Исходный код лежит на гитхабе - http://github.com/evilbloodydemon/cakephp-scope

Замечания и предложения приветствуются.