我以这种方式使用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()解雇我需要做一些额外的事情吗?
您需要确保您的字段在查询中不含糊。尝试在where查询中添加模型的名称,否则您将获得PDOExceptions:
$query->where(['myModel.visible'=>1]);