php ->find(),php – beforeFind()添加条件

使用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的其他条件.

>您还应确保说明条件中的字段属于哪个模型.这是一个很好的做法,如果你有两个模型有一个名为client_id的字段,那么将来会证明你的代码.您可以使用$this->别名来获取当前模型的别名,如果您为模型使用了不同的别名,这也将允许您的代码工作.

所以你的最终代码应该是:

public function beforeFind($queryData) {

parent::beforeFind();

$queryData['conditions'][$this->alias . '.client_id'] = 2;

return $queryData;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值