CakePHP 3.x beforeFind()回调,什么时候开火?

问题描述 投票:1回答:1

我以这种方式使用CakePHP beforeFind()回调表格:

public function beforeFind($event, $query, $options, $primary)
{
    // if ->applyOptions(['default' => false]) not use default conditions
    if(isset($options['default']) && $options['default'] == false){
        return $query;
    }

    $query->where(['visible' => 1]);

    $query->order(['sort' => 'ASC']);

    return $query;
}

这是正确的,但是当我试图检索我的结果时,它有时会被解雇,有时甚至没有。

NO - 我想如果我使用表注册表获取我的表:TableRegistry::get('MyTable')->find()->first()它没有被解雇。

YES - 如果我使用,从同一个控制器,$this->Pages->find()->first()它被解雇了!

它的工作方式只适合我吗?或者为了让beforeFind()解雇我需要做一些额外的事情吗?

cakephp orm callback cakephp-3.0
1个回答
0
投票

您需要确保您的字段在查询中不含糊。尝试在where查询中添加模型的名称,否则您将获得PDOExceptions:

$query->where(['myModel.visible'=>1]);

© www.soinside.com 2019 - 2024. All rights reserved.