cakephp - CakePHP 3.x 所有查询的默认模型条件
问题描述
我找到了多种 CakePHP 2.x 的解决方案(例如在 Model 中定义全局条件)和 CakePHP 3.x 控制器查询的解决方案:
$this->Articles->find('all', ['conditions' => ['domain =' => $this->request->host()]]);
但模型中的 CakePHP 3.x 全局查询条件没有。当我使用
function beforeFind($event, $queryData, $options) {
$queryData['conditions'][]['NOT'][$this->alias . '.parent_id'] = null;
return $queryData;
}
我得到错误Cannot use object of type Cake\ORM\Query as array
。
解决方案
好的,经过几个小时的搜索,我找到了一个非常简单的解决方案:
public function beforeFind($event, $query, $options) {
$query->where(['field_name' => 'field_value']);
return $query;
}
或内部 initialize() :
class MyClassTable extends Table
{
/**
* Initialize method
*
* @param array $config The configuration for the Table.
* @return void
*/
public function initialize(array $config)
{
parent::initialize($config);
$this->setTable('table_name');
$this->setDisplayField('title');
$this->setPrimaryKey('id');
$this->addBehavior('Timestamp');
$this->belongsTo('OtherClass', [
'foreignKey' => 'class_id',
'joinType' => 'INNER'
])->setConditions(['class_name' => 'any_value']);
}
}
推荐阅读
- javascript - 许多元素的Javascript设置值很慢
- c - 如何合并标题定义的内联函数的所有实例的静态变量?
- vim - 无法使用 macvim 8.2.319 在 MacOS Catalina 上运行 NERDTree 和 lightline
- python - 单个记录器的较低记录级别
- sql - 如何在 select 语句中使用集合进行查询(而不是在 where 子句中)
- r - 如何使我的字符串拆分不区分大小写?
- azure-devops - Azure Pipeline - 使用模板任务中的变量集作为另一个模板任务中的参数
- python - 在 .CSV 文件中,为每个位置(名称)计算每月平均降雪量,然后将结果保存在 python 中的两个单独的 .csv 文件中?
- reactjs - Sanity PatchEvent 函数对它们的作用不是很清楚
- python - 为什么 python pip install 给我错误 SSLCertVerificationError SSL 错误消息