Defining global conditions in Model
cakephp, cakephp-2.0, cakephp-2.1, cakephp-model
Solution
Use beforeFind
You can use before find to modify all queries issued for a model:
function beforeFind(array $queryData) {
$queryData['conditions'][]['NOT'][$this->alias . '.parent_id'] = null;
return $queryData;
}
Be careful using this technique to not overwrite existing conditions (note the extra `[]`) otherwise a query for "not parent_id 2" becomes "not parent_id null".
Problem
Is it possible to define global conditions for Model ? I have 2 Models: `User` and `Student`. In database both of them are using table `users` but each student has set `parent_id` to its owner (which is set in the same table) while each user has `parent_id` set to `Null`. When I use for example ``` $this->find('all'); ``` in `Student` Model I want to force Cake to return only those records from database table `users` where `parent_id != Null` . So the question is - can I define somehow global conditions in the Model? Something like that: `public $conditions = array('Student.parent_id !=' => Null);`