php – beforeFind()添加条件
发布时间:2020-12-13 17:45:30 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试根据客户端条件过滤在我的应用程序中返回的所有内容.这是在我的AppModel中: public function beforeFind($queryData) { parent::beforeFind(); $queryData['conditions'] = array('client_id' = 2); $this-log($queryData);} 但它不会过滤返回的
我正在尝试根据客户端条件过滤在我的应用程序中返回的所有内容.这是在我的AppModel中:
public function beforeFind($queryData) { parent::beforeFind(); $queryData['conditions'] = array('client_id' => 2); $this->log($queryData); } 但它不会过滤返回的内容,但条件信息会显示在日志中.我究竟做错了什么? 解决方法
使用beforeFind(),如果希望find使用它,则应返回已修改的$queryData数组.这是你目前的问题.
public function beforeFind($queryData) { parent::beforeFind(); $queryData['conditions'] = array('client_id' => 2); return $queryData; } 但是,您还有其他一些小问题可能会导致您遇到问题. >您不应该在beforeFind()中直接设置条件,而是添加条件.如果你打电话给有条件的发现怎么办?考虑一下: $this->MyModel->find('first',array( 'conditions' => array( 'MyModel.active' => 1 ) )); 您希望find使用该条件,但也希望您的beforeFind()使用您的beforeFind()自动仅返回client_id = 2的结果.不幸的是,在你的beforeFind()中有这一行: $queryData['conditions'] = array('client_id' => 2); 您刚刚完全覆盖了条件数组,并且丢失了MyModel.active = 1的其他条件. 所以你的最终代码应该是: public function beforeFind($queryData) { parent::beforeFind(); $queryData['conditions'][$this->alias . '.client_id'] = 2; return $queryData; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |