Пример #1
0
 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'));
     }
 }
Пример #2
0
 /**
  * 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;
 }