/** * @coversNothing */ public function testLoadWith() { $users = User::findAll()->loadWith(['address', 'posts' => 'tags']); $this->assertCount(4, $users); $user = $users->getFirst(); $this->assertEquals(1, $user->id); $this->assertEquals(1, $user->getAddress()->id); $this->assertCount(1, $user->getPosts()); $this->assertEquals(1, $user->getPosts()->getFirst()->id); $this->assertCount(2, $user->getPosts()->getFirst()->getTags()); $this->assertEquals([1, 2], $user->getPosts()->getFirst()->getTags()->get()->getIds()); $user = $users->getNext(); $this->assertEquals(2, $user->id); $this->assertTrue($user->getAddress()->isVoid()); $this->assertCount(0, $user->getPosts()); $user = $users->getNext(); $this->assertEquals(3, $user->id); $this->assertTrue($user->getAddress()->isVoid()); $this->assertCount(1, $user->getPosts()); $this->assertInstanceof('Harp\\Harp\\Test\\TestModel\\BlogPost', $user->getPosts()->getFirst()); $this->assertEquals(4, $user->getPosts()->getFirst()->id); $this->assertCount(0, $user->getPosts()->getFirst()->getTags()); $user = $users->getNext(); $this->assertEquals(4, $user->id); $this->assertEquals(2, $user->getAddress()->id); $posts = $user->getPosts(); $this->assertCount(2, $posts); $post = $posts->getFirst(); $this->assertEquals(2, $post->id); $this->assertCount(0, $post->getTags()); $post = $posts->getNext(); $this->assertEquals(3, $post->id); $this->assertCount(1, $post->getTags()); $this->assertEquals([2], $post->getTags()->get()->getIds()); $this->assertQueries(['SELECT `User`.* FROM `User` WHERE (`User`.`deletedAt` IS NULL)', 'SELECT `Address`.* FROM `Address` WHERE (`id` IN (1, 2))', 'SELECT `Post`.`class`, `Post`.* FROM `Post` WHERE (`userId` IN (1, 2, 3, 4))', 'SELECT `Tag`.*, `postTags`.`postId` AS `tagsKey` FROM `Tag` JOIN `PostTag` AS `postTags` ON `postTags`.`tagId` = `Tag`.`id` WHERE (`postTags`.`postId` IN (1, 2, 3, 4))']); }