Reads record(s) from the database.
public read ( Model $Model, array $queryData = [], integer $recursive = null ) : mixed | ||
$Model | Model | A Model object that the query is for. |
$queryData | array | An array of queryData information containing keys similar to Model::find(). |
$recursive | integer | Number of levels of association |
return | mixed | boolean false on error/failure. An array of results on success. |
/** * testRealQueries method * * @return void */ public function testRealQueries() { $this->loadFixtures('Apple', 'Article', 'User', 'Comment', 'Tag', 'Sample', 'ArticlesTag'); $Apple = ClassRegistry::init('Apple'); $Article = ClassRegistry::init('Article'); $result = $this->Dbo->rawQuery('SELECT color, name FROM ' . $this->Dbo->fullTableName('apples')); $this->assertTrue(!empty($result)); $result = $this->Dbo->fetchRow($result); $expected = array($this->Dbo->fullTableName('apples', false, false) => array('color' => 'Red 1', 'name' => 'Red Apple 1')); $this->assertEquals($expected, $result); $result = $this->Dbo->fetchAll('SELECT name FROM ' . $this->Dbo->fullTableName('apples') . ' ORDER BY id'); $expected = array(array($this->Dbo->fullTableName('apples', false, false) => array('name' => 'Red Apple 1')), array($this->Dbo->fullTableName('apples', false, false) => array('name' => 'Bright Red Apple')), array($this->Dbo->fullTableName('apples', false, false) => array('name' => 'green blue')), array($this->Dbo->fullTableName('apples', false, false) => array('name' => 'Test Name')), array($this->Dbo->fullTableName('apples', false, false) => array('name' => 'Blue Green')), array($this->Dbo->fullTableName('apples', false, false) => array('name' => 'My new apple')), array($this->Dbo->fullTableName('apples', false, false) => array('name' => 'Some odd color'))); $this->assertEquals($expected, $result); $result = $this->Dbo->field($this->Dbo->fullTableName('apples', false, false), 'SELECT color, name FROM ' . $this->Dbo->fullTableName('apples') . ' ORDER BY id'); $expected = array('color' => 'Red 1', 'name' => 'Red Apple 1'); $this->assertEquals($expected, $result); $Apple->unbindModel(array(), false); $result = $this->Dbo->read($Apple, array('fields' => array($Apple->escapeField('name')), 'conditions' => null, 'recursive' => -1)); $expected = array(array('Apple' => array('name' => 'Red Apple 1')), array('Apple' => array('name' => 'Bright Red Apple')), array('Apple' => array('name' => 'green blue')), array('Apple' => array('name' => 'Test Name')), array('Apple' => array('name' => 'Blue Green')), array('Apple' => array('name' => 'My new apple')), array('Apple' => array('name' => 'Some odd color'))); $this->assertEquals($expected, $result); $result = $this->Dbo->read($Article, array('fields' => array('id', 'user_id', 'title'), 'conditions' => null, 'recursive' => 1)); $this->assertTrue(Set::matches('/Article[id=1]', $result)); $this->assertTrue(Set::matches('/Comment[id=1]', $result)); $this->assertTrue(Set::matches('/Comment[id=2]', $result)); $this->assertFalse(Set::matches('/Comment[id=10]', $result)); }
/** * testDistinctWithLimit method * * @return void */ public function testDistinctWithLimit() { $this->db->read($this->model, array('fields' => array('DISTINCT SqlserverTestModel.city', 'SqlserverTestModel.country'), 'limit' => 5)); $result = $this->db->getLastQuery(); $this->assertRegExp('/^SELECT DISTINCT TOP 5/', $result); }
/** * Returns an array of all result rows for a given SQL query. * Returns false if no rows matched. * * @param string $sql SQL statement * @param boolean $cache Enables returning/storing cached query results * @return array Array of resultset rows, or false if no rows matched */ function read(&$model, $queryData = array(), $recursive = null) { $results = parent::read($model, $queryData, $recursive); $this->__fieldMappings = array(); return $results; }
/** * testDistinctWithLimit method * * @access public * @return void */ function testDistinctWithLimit() { $this->db->read($this->model, array('fields' => array('DISTINCT MssqlTestModel.city', 'MssqlTestModel.country'), 'limit' => 5)); $result = $this->db->getLastQuery(); $this->assertPattern('/^SELECT DISTINCT TOP 5/', $result); }
/** * Returns an array of all result rows for a given SQL query. * Returns false if no rows matched. * * @param Model $model The model to read from * @param array $queryData The query data * @param int $recursive How many layers to go. * @return array|false Array of resultset rows, or false if no rows matched */ public function read(Model $model, $queryData = array(), $recursive = null) { $results = parent::read($model, $queryData, $recursive); // 2014.09.30 SFICHERA: Commented in order to properly support joined models... //$this->_fieldMappings = array(); return $results; }
/** * Returns an array of all result rows for a given SQL query. * Returns false if no rows matched. * * @param Model $model The model to read from * @param array $queryData The query data * @param int $recursive How many layers to go. * * @return array|false Array of resultset rows, or false if no rows matched */ public function read(Model $model, $queryData = array(), $recursive = NULL) { $results = parent::read($model, $queryData, $recursive); $this->_fieldMappings = array(); return $results; }