createApplication(); $em = $app->getContainer()->get('entityManager'); $em->createEntity('Account', [ 'name' => 'test-1', ]); $em->createEntity('Account', [ 'name' => 'test-2', ]); $em->createEntity('Account', [ 'name' => 'test-3', ]); $query = $em->getQueryBuilder() ->select() ->from('Account') ->limit(0, 2) ->order('name') ->build(); $collection = $em->getCollectionFactory()->createFromQuery($query); $count = 0; $list = []; foreach ($collection as $e) { $count++; $list[] = $e; } $this->assertEquals(2, $count); $this->assertEquals('test-1', $list[0]->get('name')); $array = $collection->toArray(); $this->assertEquals('test-2', $array[1]['name']); } public function test2() { $app = $this->createApplication(); $em = $app->getContainer()->get('entityManager'); $em->createEntity('Account', [ 'name' => 'test-2', ]); $em->createEntity('Account', [ 'name' => 'test-3', ]); $query = $em->getQueryBuilder() ->select() ->from('Account') ->limit(0, 2) ->order('name') ->build(); $collection = $em->getCollectionFactory()->createFromQuery($query); $count = 0; foreach ($collection as $e) { $count++; } $this->assertEquals(2, $count); } public function testFind1() { $app = $this->createApplication(); $em = $app->getContainer()->get('entityManager'); $em->createEntity('Account', [ 'name' => 'test-1', ]); $em->createEntity('Account', [ 'name' => 'test-2', ]); $em->createEntity('Account', [ 'name' => 'test-3', ]); $query = $em->getQueryBuilder() ->select() ->from('Account') ->where(['name' => 'test-1']) ->build(); $collection = $em->getRepository('Account') ->clone($query) ->sth() ->find(); $this->assertEquals(SthCollection::class, get_class($collection)); $count = 0; foreach ($collection as $e) { $count++; } $this->assertEquals(1, $count); } public function testFindRelatedOneToMany() { $app = $this->createApplication(); $em = $app->getContainer()->get('entityManager'); $account = $em->createEntity('Account', [ 'name' => 'test-1', ]); $em->createEntity('Opportunity', [ 'name' => 'o-1', 'accountId' => $account->id, ]); $em->createEntity('Opportunity', [ 'name' => 'o-2', 'accountId' => $account->id, ]); $query = $em->getQueryBuilder() ->select() ->from('Opportunity') ->order('name') ->build(); $collection = $em->getRepository('Account')->getRelation($account, 'opportunities') ->clone($query) ->sth() ->find(); $this->assertEquals(SthCollection::class, get_class($collection)); $count = 0; foreach ($collection as $e) { $count++; } $this->assertEquals(2, $count); $array = $collection->toArray(); $this->assertEquals($array[0]['name'], 'o-1'); } public function testFindRelatedManyToMany() { $app = $this->createApplication(); $em = $app->getContainer()->get('entityManager'); $contact = $em->createEntity('Contact', [ 'lastName' => 'test-1', ]); $em->createEntity('Opportunity', [ 'name' => 'o-1', 'contactsIds' => [$contact->id], ]); $em->createEntity('Opportunity', [ 'name' => 'o-2', 'contactsIds' => [$contact->id], ]); $query = $em->getQueryBuilder() ->select() ->from('Opportunity') ->build(); $collection = $em->getRepository('Contact')->getRelation($contact, 'opportunities') ->clone($query) ->sth() ->find(); $this->assertEquals(SthCollection::class, get_class($collection)); $count = 0; foreach ($collection as $e) { $count++; } $this->assertEquals(2, $count); } }