public function testInstancesCollectionMagic() { $results = [['id' => 1, 'name' => 'Alex', 'email' => '*****@*****.**'], ['id' => 2, 'name' => 'Lucie', 'email' => null], ['id' => 3, 'name' => 'Archibald', 'email' => '*****@*****.**']]; $c = new Resultset($results); $m = Model::factory('Solution10\\ORM\\Tests\\ActiveRecord\\Stubs\\User'); $c->resultModel($m); $ranged = $c['1:2']; $this->assertCount(2, $ranged); foreach ($ranged as $idx => $item) { $this->assertInstanceOf('Solution10\\ORM\\Tests\\ActiveRecord\\Stubs\\User', $item); $this->assertEquals($results[$idx + 1]['id'], $item->get('id')); $this->assertEquals($results[$idx + 1]['name'], $item->get('name')); $this->assertEquals($results[$idx + 1]['email'], $item->get('email')); } }
/** * Runs a query against this model, returning either an instance of this model, or a Resultset * * @param string $query Query to run * @param array $params Params to inject into the query * @param array $types Parameter type hints for the query * @param int $return Return type: self::SINGLE or self::MANY * @return Model|Resultset|array */ public static function query($query, array $params = [], array $types = [], $return = self::MANY) { $thisClass = get_called_class(); $instance = self::factory($thisClass); $meta = $instance->meta(); /* @var $conn \Doctrine\DBAL\Connection */ $conn = $meta->connectionInstance(); $result = $conn->fetchAll($query, $params, $types); if ($return === self::SINGLE) { if (count($result) > 0) { $instance->setRaw($result[0]); $instance->setAsSaved(); } $toReturn = $instance; } elseif ($return === self::MANY) { $c = new Resultset($result); $c->resultModel($instance); $toReturn = $c; } else { $toReturn = $result; } return $toReturn; }