CakePHP 3.x beforeFind()回调,何时启动?

CakePHP 3.x beforeFind()回调,何时启动?,cakephp,orm,callback,cakephp-3.0,Cakephp,Orm,Callback,Cakephp 3.0,我使用CakePHPbeforeFind()callback对我的表进行如下操作: public function beforeFind($event, $query, $options, $primary) { // if ->applyOptions(['default' => false]) not use default conditions if(isset($options['default']) && $options['default'

我使用CakePHP
beforeFind()
callback对我的表进行如下操作:

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来获取我的表:
TableRegistry::get('MyTable')->find()->first()
它不会被触发

YES
-如果我使用同一个控制器,
$this->Pages->find()->first()
它会被触发


它的工作方式仅适用于我?或启动beforeFind()我需要做一些额外的工作?

作为查询的一部分,您需要确保字段不含糊。尝试在where查询中添加模型的名称,否则会出现以下异常:


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

作为查询的一部分,您需要确保字段没有歧义。尝试在where查询中添加模型的名称,否则会出现以下异常:


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

您确定为
MyTable
传递的字符串正确吗?如果名字不对,蛋糕可能是在为你制作一个脚手架模型。伙计,你说得对!我用单数名
BannerTable.php
调用我的文件,而不是复数名
BannersTable.php
非常感谢!我错了!您确定为
MyTable
传递的字符串正确吗?如果名字不对,蛋糕可能是在为你制作一个脚手架模型。伙计,你说得对!我用单数名
BannerTable.php
调用我的文件,而不是复数名
BannersTable.php
非常感谢!我错了!是的,这也是一个很好的做法,但是我的错误被@Greg Schmidt发现了我用错误的名称调用文件是的,这也是一个很好的做法,但是我的错误被@Greg Schmidt发现了我用错误的名称调用文件