2015-12-26 36 views
3

如何在所有查询中更改模型的输出之一?cakephp - 触发 - 查询执行后

这意味着查询将在此模型上运行,然后转到特定功能。

例如,在用户模式下,如何删除密码字段为所有查询

感谢

回答

6

以下内容添加到你的模型:

public function afterFind($results, $primary = false){ 
    foreach ($results as $key => $val) { 
     unset($results[$key][$this->alias]['password']); 
    } 

    return $results; 
} 

这也应该工作:

public function afterFind($results, $primary = false){ 
    return Hash::remove($results, '{n}.'.$this->alias.'.password'); 
} 
+0

谢谢,工作每2功能。 – Farhad

+0

有没有办法会有例外情况? – Farhad

+0

没有更多。过去的情况是,当在主模型上调用'find()'时,''result'可以以不同的方式进行构造,而在关联的模型中则是递归调用。 [此行为在2.6.0中修复](https://github.com/cakephp/cakephp/pull/4223)。确保你在CakePHP 2.6或更高版本上。 –