CakePHP 3.x beforeFind()回调,何时启动?
我使用CakePHPCakePHP 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'
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发现了我用错误的名称调用文件