/** * beforeFind * @param Event $event * @param Query $query * @param ArrayObject $options * @param $primary */ public function beforeFind(Event $event, Query $query, ArrayObject $options, $primary) { $getOptions = $query->getOptions(); if (!array_key_exists('enableSoftDelete', $getOptions) || $getOptions['enableSoftDelete'] == true) { $modelName = $this->_table->alias(); $booleanField = $this->config('boolean'); $timestampField = $this->config('timestamp'); if ($booleanField !== false && $this->_table->hasField($booleanField)) { $query->where([$modelName . '.' . $booleanField => false]); } if ($booleanField === false && $timestampField !== false && $this->_table->hasField($timestampField)) { $query->where([$modelName . '.' . $timestampField . ' IS' => null]); } } }
/** * Tests getOptions() method * * @return void */ public function testGetOptions() { $options = ['doABarrelRoll' => true, 'fields' => ['id', 'name']]; $query = new Query($this->connection, $this->table); $query->applyOptions($options); $expected = ['doABarrelRoll' => true]; $this->assertEquals($expected, $query->getOptions()); $expected = ['doABarrelRoll' => false, 'doAwesome' => true]; $query->applyOptions($expected); $this->assertEquals($expected, $query->getOptions()); }
/** * Calls a finder method directly and applies it to the passed query, * if no query is passed a new one will be created and returned * * @param string $type name of the finder to be called * @param \Cake\ORM\Query $query The query object to apply the finder options to * @param array $options List of options to pass to the finder * @return \Cake\ORM\Query * @throws \BadMethodCallException */ public function callFinder($type, Query $query, array $options = []) { $query->applyOptions($options); $options = $query->getOptions(); $finder = 'find' . $type; if (method_exists($this, $finder)) { return $this->{$finder}($query, $options); } if ($this->_behaviors && $this->_behaviors->hasFinder($type)) { return $this->_behaviors->callFinder($type, [$query, $options]); } throw new \BadMethodCallException(sprintf('Unknown finder method "%s"', $type)); }
/** * Triggers beforeFind on the target table for the query this association is * attaching to * * @param \Cake\ORM\Query $query the query this association is attaching itself to * @return void */ protected function _dispatchBeforeFind($query) { $table = $this->target(); $options = $query->getOptions(); $table->dispatchEvent('Model.beforeFind', [$query, new \ArrayObject($options), false]); }
/** * Triggers beforeFind on the target table for the query this association is * attaching to * * @param \Cake\ORM\Query $query the query this association is attaching itself to * @return void */ protected function _dispatchBeforeFind($query) { $table = $this->target(); $options = $query->getOptions(); $event = new Event('Model.beforeFind', $table, [$query, $options, false]); $table->getEventManager()->dispatch($event); }