2019-01-24 15:50:40 2059次浏览 1条回答 0 悬赏 20 金钱

问题:
我想在每个 find 查询条件之前,都加一个 and where project_id = 1,我加了一个 behavior,也进入到behavior 里面了,应该是属于 ActiveRecord 的哪一个呢,EVENT_AFTER_FIND,也不太清楚要怎么加件..

public function events()
{
    return [
        Application::EVENT_BEFORE_REQUEST => 'handle'
    ];
}
public function handle()
{
    Event::on(ActiveRecord::className(), ActiveRecord::EVENT_AFTER_FIND, [$this, 'afterFind']);
}
    // 查询之前
public function afterFind($event){
    // 这里可以批量加where条件吗
    // p($event);
}

最佳答案

  • 小叮当的肚兜 发布于 2019-01-24 17:05 举报

    model 继承的 ActiveRecordActiveRecord 类中有个方法叫 find

    public static function find()
    {
        return Yii::createObject(ActiveQuery::className(), [get_called_class()]);
    }
    

    写个类 testActiveQuery 继承 ActiveQuery 类,model 重写 find 方法。把 ActiveQuery 换掉。

    testActiveQuery 重写 父类 init 方法。

    public function init()
    {
        //为所欲为 自己看下代码
        $this->andOnCondition(['project_id' => 1]);
        parent::init();
    }
    
    1 条回复
    回复于 2019-01-26 12:38 回复

    谢谢!!非常感谢!

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
yoyo0926
见习主管

yoyo0926

注册时间:2016-04-20
最后登录:2022-04-01
在线时长:11小时46分
  • 粉丝1
  • 金钱295
  • 威望0
  • 积分405

热门问题