/** * Integration test for query caching. * * @return void */ public function testCacheWriteIntegration() { $table = TableRegistry::get('Articles'); $query = new Query($this->connection, $table); $query->select(['id', 'title']); $cacher = $this->getMock('Cake\\Cache\\CacheEngine'); $cacher->expects($this->once())->method('write')->with('my_key', $this->isInstanceOf('Cake\\Datasource\\ResultSetInterface')); $query->cache('my_key', $cacher)->where(['id' => 1]); $query->all(); }
/** * Builds an array containing the results from fetchQuery indexed by * the foreignKey value corresponding to this association. * * @param \Cake\ORM\Query $fetchQuery The query to get results from * @param array $options The options passed to the eager loader * @return array * @throws \RuntimeException when the association property is not part of the results set. */ protected function _buildResultMap($fetchQuery, $options) { $resultMap = []; $key = (array) $options['foreignKey']; $property = $this->target()->association($this->junction()->alias())->property(); $hydrated = $fetchQuery->hydrate(); foreach ($fetchQuery->all() as $result) { if (!isset($result[$property])) { throw new RuntimeException(sprintf('"%s" is missing from the belongsToMany results. Results cannot be created.', $property)); } $result[$this->_junctionProperty] = $result[$property]; unset($result[$property]); if ($hydrated) { $result->dirty($this->_junctionProperty, false); } $values = []; foreach ($key as $k) { $values[] = $result[$this->_junctionProperty][$k]; } $resultMap[implode(';', $values)][] = $result; } return $resultMap; }
/** * Builds an array containing the results from fetchQuery indexed by * the foreignKey value corresponding to this association. * * @param \Cake\ORM\Query $fetchQuery The query to get results from * @param array $options The options passed to the eager loader * @return array */ protected function _buildResultMap($fetchQuery, $options) { $resultMap = []; $key = (array) $options['foreignKey']; $property = $this->target()->association($this->junction()->alias())->property(); $hydrated = $fetchQuery->hydrate(); foreach ($fetchQuery->all() as $result) { $result[$this->_junctionProperty] = $result[$property]; unset($result[$property]); if ($hydrated) { $result->dirty($this->_junctionProperty, false); } $values = []; foreach ($key as $k) { $values[] = $result[$this->_junctionProperty][$k]; } $resultMap[implode(';', $values)][] = $result; } return $resultMap; }