CakePHP 3.x 所有查询的默认模型条件



我找到了CakePHP 2.x的多种解决方案(例如,在模型中定义全局条件(和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 CakeORMQuery 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']);
    }
}

最新更新