【发布时间】:2016-09-06 12:32:10
【问题描述】:
我以这种方式为我的表使用 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() 被解雇了,我需要做一些额外的事情?
【问题讨论】:
-
您确定您传递给
MyTable的字符串是正确的吗?如果名称错误,Cake 可能会为您创建一个脚手架模型。 -
你说得对!我用单数名称
BannerTable.php而不是复数名称BannersTable.php调用我的文件,非常感谢!我的错!
标签: cakephp orm callback cakephp-3.0