Условия модели CakePHP 3.x по умолчанию для всех запросов - PullRequest
0 голосов
/ 19 апреля 2019

Я нашел несколько решений для CakePHP 2.x (например, здесь Определение глобальных условий в модели ) и решение для запросов контроллера CakePHP 3.x: $this->Articles->find('all', ['conditions' => ['domain =' => $this->request->host()]]);, но ничего для CakePHP 3.x globalусловия запроса в моделях.Когда я использую

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.

1 Ответ

0 голосов
/ 20 апреля 2019

хорошо, после часового поиска я нашел одно очень простое решение:

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']);

    }
}
...