{"action":"created","comment":{"url":"https://api.github.com/repos/api-platform/core/pulls/comments/109340452","pull_request_review_id":30435068,"id":109340452,"diff_hunk":"@@ -123,10 +126,150 @@ public function testApplyCollection()\n \n         $queryNameGenerator = $this->prophesize(QueryNameGeneratorInterface::class);\n         $queryNameGenerator->generateJoinAlias('colors')->shouldBeCalled()->willReturn('colors_2');\n+        $queryNameGenerator->generateJoinAlias('o')->shouldBeCalled()->willReturn('o_2');\n \n         $filterEagerLoadingExtension = new FilterEagerLoadingExtension($resourceMetadataFactoryProphecy->reveal(), true);\n         $filterEagerLoadingExtension->applyToCollection($qb, $queryNameGenerator->reveal(), DummyCar::class, 'get');\n \n         $this->assertEquals('SELECT o FROM ApiPlatform\\Core\\Tests\\Fixtures\\TestBundle\\Entity\\DummyCar o LEFT JOIN o.colors colors WHERE o IN(SELECT o_2 FROM ApiPlatform\\Core\\Tests\\Fixtures\\TestBundle\\Entity\\DummyCar o_2 LEFT JOIN o_2.colors colors_2 WHERE o_2.colors = :foo)', $qb->getDQL());\n     }\n+\n+    /**\n+     * https://github.com/api-platform/core/issues/1021.\n+     */\n+    public function testHiddenOrderBy()\n+    {\n+        $resourceMetadataFactoryProphecy = $this->prophesize(ResourceMetadataFactoryInterface::class);\n+        $resourceMetadataFactoryProphecy->create(DummyCar::class)->willReturn(new ResourceMetadata(DummyCar::class));\n+\n+        $em = $this->prophesize(EntityManager::class);\n+        $em->getExpressionBuilder()->shouldBeCalled()->willReturn(new Expr());\n+        $em->getClassMetadata(DummyCar::class)->shouldBeCalled()->willReturn(new ClassMetadataInfo(DummyCar::class));\n+\n+        $qb = new QueryBuilder($em->reveal());\n+\n+        $qb->select('o', 'CASE WHEN o.dateCreated IS NULL THEN 0 ELSE 1 END AS HIDDEN _o_dateCreated_null_rank')\n+            ->from(DummyCar::class, 'o')\n+            ->leftJoin('o.colors', 'colors')\n+            ->where('o.colors = :foo')\n+            ->orderBy('_o_dateCreated_null_rank DESC')\n+            ->setParameter('foo', 1);\n+\n+        $queryNameGenerator = $this->prophesize(QueryNameGeneratorInterface::class);\n+        $queryNameGenerator->generateJoinAlias('colors')->shouldBeCalled()->willReturn('colors_2');\n+        $queryNameGenerator->generateJoinAlias('o')->shouldBeCalled()->willReturn('o_2');\n+        $filterEagerLoadingExtension = new FilterEagerLoadingExtension($resourceMetadataFactoryProphecy->reveal(), true);\n+        $filterEagerLoadingExtension->applyToCollection($qb, $queryNameGenerator->reveal(), DummyCar::class, 'get');\n+\n+        $expected = <<<SQL\n+SELECT o, CASE WHEN o.dateCreated IS NULL THEN 0 ELSE 1 END AS HIDDEN _o_dateCreated_null_rank \n+FROM ApiPlatform\\Core\\Tests\\Fixtures\\TestBundle\\Entity\\DummyCar o \n+LEFT JOIN o.colors colors \n+WHERE o IN(\n+  SELECT o_2 FROM ApiPlatform\\Core\\Tests\\Fixtures\\TestBundle\\Entity\\DummyCar o_2 \n+  LEFT JOIN o_2.colors colors_2 \n+  WHERE o_2.colors = :foo\n+) ORDER BY _o_dateCreated_null_rank DESC ASC\n+SQL;\n+\n+        $this->assertEquals($this->toDQLString($expected), $qb->getDQL());\n+    }\n+\n+    public function testGroupBy()\n+    {\n+        $resourceMetadataFactoryProphecy = $this->prophesize(ResourceMetadataFactoryInterface::class);\n+        $resourceMetadataFactoryProphecy->create(DummyCar::class)->willReturn(new ResourceMetadata(DummyCar::class));\n+\n+        $em = $this->prophesize(EntityManager::class);\n+        $em->getExpressionBuilder()->shouldBeCalled()->willReturn(new Expr());\n+        $em->getClassMetadata(DummyCar::class)->shouldBeCalled()->willReturn(new ClassMetadataInfo(DummyCar::class));\n+\n+        $qb = new QueryBuilder($em->reveal());\n+\n+        $qb->select('o', 'count(o.id) as counter')\n+            ->from(DummyCar::class, 'o')\n+            ->leftJoin('o.colors', 'colors')\n+            ->where('o.colors = :foo')\n+            ->orderBy('o.colors')\n+            ->groupBy('o.colors')\n+            ->having('counter > 3')\n+            ->setParameter('foo', 1);\n+\n+        $queryNameGenerator = $this->prophesize(QueryNameGeneratorInterface::class);\n+        $queryNameGenerator->generateJoinAlias('colors')->shouldBeCalled()->willReturn('colors_2');\n+        $queryNameGenerator->generateJoinAlias('o')->shouldBeCalled()->willReturn('o_2');\n+        $filterEagerLoadingExtension = new FilterEagerLoadingExtension($resourceMetadataFactoryProphecy->reveal(), true);\n+        $filterEagerLoadingExtension->applyToCollection($qb, $queryNameGenerator->reveal(), DummyCar::class, 'get');\n+\n+        $expected = <<<SQL\n+SELECT o, count(o.id) as counter \n+FROM ApiPlatform\\Core\\Tests\\Fixtures\\TestBundle\\Entity\\DummyCar o \n+LEFT JOIN o.colors colors WHERE o \n+IN(\n+  SELECT o_2 FROM ApiPlatform\\Core\\Tests\\Fixtures\\TestBundle\\Entity\\DummyCar o_2 \n+  LEFT JOIN o_2.colors colors_2 \n+  WHERE o_2.colors = :foo\n+) \n+GROUP BY o.colors HAVING counter > 3 \n+ORDER BY o.colors ASC\n+SQL;\n+\n+        $this->assertEquals($this->toDQLString($expected), $qb->getDQL());\n+    }\n+\n+    public function testCompositeIdentifiers()\n+    {\n+        $resourceMetadataFactoryProphecy = $this->prophesize(ResourceMetadataFactoryInterface::class);\n+        $resourceMetadataFactoryProphecy->create(CompositeRelation::class)->willReturn(new ResourceMetadata(CompositeRelation::class));\n+\n+        $classMetadata = new ClassMetadataInfo(CompositeRelation::class);\n+        $classMetadata->isIdentifierComposite = true;\n+        $classMetadata->identifier = ['item', 'label'];\n+\n+        $em = $this->prophesize(EntityManager::class);\n+        $em->getExpressionBuilder()->shouldBeCalled()->willReturn(new Expr());\n+        $em->getClassMetadata(CompositeRelation::class)->shouldBeCalled()->willReturn($classMetadata);\n+\n+        $qb = new QueryBuilder($em->reveal());\n+\n+        $qb->select('o')\n+            ->from(CompositeRelation::class, 'o')\n+            ->innerJoin('o.compositeItem', 'item')\n+            ->innerJoin('o.compositeLabel', 'label')\n+            ->where('item.field1 = :foo')\n+            ->setParameter('foo', 1);\n+\n+        $queryNameGenerator = $this->prophesize(QueryNameGeneratorInterface::class);\n+        $queryNameGenerator->generateJoinAlias('item')->shouldBeCalled()->willReturn('item_2');\n+        $queryNameGenerator->generateJoinAlias('label')->shouldBeCalled()->willReturn('label_2');\n+        $queryNameGenerator->generateJoinAlias('o')->shouldBeCalled()->willReturn('o_2');\n+\n+        $filterEagerLoadingExtension = new FilterEagerLoadingExtension($resourceMetadataFactoryProphecy->reveal(), true);\n+        $filterEagerLoadingExtension->applyToCollection($qb, $queryNameGenerator->reveal(), CompositeRelation::class, 'get');\n+\n+        $expected = <<<SQL\n+SELECT o \n+FROM ApiPlatform\\Core\\Tests\\Fixtures\\TestBundle\\Entity\\CompositeRelation o \n+INNER JOIN o.compositeItem item \n+INNER JOIN o.compositeLabel label \n+WHERE o.item IN(\n+    SELECT IDENTITY(o_2.item) FROM ApiPlatform\\Core\\Tests\\Fixtures\\TestBundle\\Entity\\CompositeRelation o_2 \n+    INNER JOIN o_2.compositeItem item_2 \n+    INNER JOIN o_2.compositeLabel label_2 \n+    WHERE item_2.field1 = :foo\n+) AND o.label IN(\n+    SELECT IDENTITY(o_2.label) FROM ApiPlatform\\Core\\Tests\\Fixtures\\TestBundle\\Entity\\CompositeRelation o_2 \n+    INNER JOIN o_2.compositeItem item_2 \n+    INNER JOIN o_2.compositeLabel label_2 \n+    WHERE item_2.field1 = :foo\n+)\n+SQL;\n+\n+        $this->assertEquals($this->toDQLString($expected), $qb->getDQL());\n+    }\n+\n+    private function toDQLString(string $dql): string\n+    {\n+        return preg_replace('/\\\\r\\\\n|\\\\n/', '', str_replace('  ', '', $dql));","path":"tests/Bridge/Doctrine/Orm/Extension/FilterEagerLoadingExtensionTest.php","position":168,"original_position":168,"commit_id":"7a5903572c29370043cdf1f8979724a30c130829","original_commit_id":"7a5903572c29370043cdf1f8979724a30c130829","user":{"login":"teohhanhui","id":548843,"avatar_url":"https://avatars0.githubusercontent.com/u/548843?v=3","gravatar_id":"","url":"https://api.github.com/users/teohhanhui","html_url":"https://github.com/teohhanhui","followers_url":"https://api.github.com/users/teohhanhui/followers","following_url":"https://api.github.com/users/teohhanhui/following{/other_user}","gists_url":"https://api.github.com/users/teohhanhui/gists{/gist_id}","starred_url":"https://api.github.com/users/teohhanhui/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/teohhanhui/subscriptions","organizations_url":"https://api.github.com/users/teohhanhui/orgs","repos_url":"https://api.github.com/users/teohhanhui/repos","events_url":"https://api.github.com/users/teohhanhui/events{/privacy}","received_events_url":"https://api.github.com/users/teohhanhui/received_events","type":"User","site_admin":false},"body":"If we improve the regex then there'd be no need for the `str_replace` :smile:","created_at":"2017-04-03T05:03:54Z","updated_at":"2017-04-03T05:03:54Z","html_url":"https://github.com/api-platform/core/pull/1022#discussion_r109340452","pull_request_url":"https://api.github.com/repos/api-platform/core/pulls/1022","_links":{"self":{"href":"https://api.github.com/repos/api-platform/core/pulls/comments/109340452"},"html":{"href":"https://github.com/api-platform/core/pull/1022#discussion_r109340452"},"pull_request":{"href":"https://api.github.com/repos/api-platform/core/pulls/1022"}}},"pull_request":{"url":"https://api.github.com/repos/api-platform/core/pulls/1022","id":113354514,"html_url":"https://github.com/api-platform/core/pull/1022","diff_url":"https://github.com/api-platform/core/pull/1022.diff","patch_url":"https://github.com/api-platform/core/pull/1022.patch","issue_url":"https://api.github.com/repos/api-platform/core/issues/1022","number":1022,"state":"closed","locked":false,"title":"Fix #1021 order by hidden eager loading","user":{"login":"soyuka","id":1321971,"avatar_url":"https://avatars0.githubusercontent.com/u/1321971?v=3","gravatar_id":"","url":"https://api.github.com/users/soyuka","html_url":"https://github.com/soyuka","followers_url":"https://api.github.com/users/soyuka/followers","following_url":"https://api.github.com/users/soyuka/following{/other_user}","gists_url":"https://api.github.com/users/soyuka/gists{/gist_id}","starred_url":"https://api.github.com/users/soyuka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/soyuka/subscriptions","organizations_url":"https://api.github.com/users/soyuka/orgs","repos_url":"https://api.github.com/users/soyuka/repos","events_url":"https://api.github.com/users/soyuka/events{/privacy}","received_events_url":"https://api.github.com/users/soyuka/received_events","type":"User","site_admin":false},"body":"| Q             | A\r\n| ------------- | ---\r\n| Bug fix?      | yes\r\n| New feature?  | no\r\n| BC breaks?    | no\r\n| Deprecations? | no\r\n| Tests pass?   | yes\r\n| Fixed tickets | #1021\r\n| License       | MIT\r\n| Doc PR        | na\r\n\r\n\r\n","created_at":"2017-03-30T06:27:57Z","updated_at":"2017-04-03T05:03:54Z","closed_at":"2017-04-01T07:16:58Z","merged_at":"2017-04-01T07:16:58Z","merge_commit_sha":"9a63fdc5f2d7c63251961483f182de602ac6adce","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/api-platform/core/pulls/1022/commits","review_comments_url":"https://api.github.com/repos/api-platform/core/pulls/1022/comments","review_comment_url":"https://api.github.com/repos/api-platform/core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/api-platform/core/issues/1022/comments","statuses_url":"https://api.github.com/repos/api-platform/core/statuses/7a5903572c29370043cdf1f8979724a30c130829","head":{"label":"soyuka:hotfix/filter-eager-loading-order-by-hidden","ref":"hotfix/filter-eager-loading-order-by-hidden","sha":"7a5903572c29370043cdf1f8979724a30c130829","user":{"login":"soyuka","id":1321971,"avatar_url":"https://avatars0.githubusercontent.com/u/1321971?v=3","gravatar_id":"","url":"https://api.github.com/users/soyuka","html_url":"https://github.com/soyuka","followers_url":"https://api.github.com/users/soyuka/followers","following_url":"https://api.github.com/users/soyuka/following{/other_user}","gists_url":"https://api.github.com/users/soyuka/gists{/gist_id}","starred_url":"https://api.github.com/users/soyuka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/soyuka/subscriptions","organizations_url":"https://api.github.com/users/soyuka/orgs","repos_url":"https://api.github.com/users/soyuka/repos","events_url":"https://api.github.com/users/soyuka/events{/privacy}","received_events_url":"https://api.github.com/users/soyuka/received_events","type":"User","site_admin":false},"repo":{"id":41291626,"name":"core","full_name":"soyuka/core","owner":{"login":"soyuka","id":1321971,"avatar_url":"https://avatars0.githubusercontent.com/u/1321971?v=3","gravatar_id":"","url":"https://api.github.com/users/soyuka","html_url":"https://github.com/soyuka","followers_url":"https://api.github.com/users/soyuka/followers","following_url":"https://api.github.com/users/soyuka/following{/other_user}","gists_url":"https://api.github.com/users/soyuka/gists{/gist_id}","starred_url":"https://api.github.com/users/soyuka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/soyuka/subscriptions","organizations_url":"https://api.github.com/users/soyuka/orgs","repos_url":"https://api.github.com/users/soyuka/repos","events_url":"https://api.github.com/users/soyuka/events{/privacy}","received_events_url":"https://api.github.com/users/soyuka/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/soyuka/core","description":"The Hypermedia REST API component of API Platform: JSON-LD and Hydra support, works with Symfony too","fork":true,"url":"https://api.github.com/repos/soyuka/core","forks_url":"https://api.github.com/repos/soyuka/core/forks","keys_url":"https://api.github.com/repos/soyuka/core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/soyuka/core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/soyuka/core/teams","hooks_url":"https://api.github.com/repos/soyuka/core/hooks","issue_events_url":"https://api.github.com/repos/soyuka/core/issues/events{/number}","events_url":"https://api.github.com/repos/soyuka/core/events","assignees_url":"https://api.github.com/repos/soyuka/core/assignees{/user}","branches_url":"https://api.github.com/repos/soyuka/core/branches{/branch}","tags_url":"https://api.github.com/repos/soyuka/core/tags","blobs_url":"https://api.github.com/repos/soyuka/core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/soyuka/core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/soyuka/core/git/refs{/sha}","trees_url":"https://api.github.com/repos/soyuka/core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/soyuka/core/statuses/{sha}","languages_url":"https://api.github.com/repos/soyuka/core/languages","stargazers_url":"https://api.github.com/repos/soyuka/core/stargazers","contributors_url":"https://api.github.com/repos/soyuka/core/contributors","subscribers_url":"https://api.github.com/repos/soyuka/core/subscribers","subscription_url":"https://api.github.com/repos/soyuka/core/subscription","commits_url":"https://api.github.com/repos/soyuka/core/commits{/sha}","git_commits_url":"https://api.github.com/repos/soyuka/core/git/commits{/sha}","comments_url":"https://api.github.com/repos/soyuka/core/comments{/number}","issue_comment_url":"https://api.github.com/repos/soyuka/core/issues/comments{/number}","contents_url":"https://api.github.com/repos/soyuka/core/contents/{+path}","compare_url":"https://api.github.com/repos/soyuka/core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/soyuka/core/merges","archive_url":"https://api.github.com/repos/soyuka/core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/soyuka/core/downloads","issues_url":"https://api.github.com/repos/soyuka/core/issues{/number}","pulls_url":"https://api.github.com/repos/soyuka/core/pulls{/number}","milestones_url":"https://api.github.com/repos/soyuka/core/milestones{/number}","notifications_url":"https://api.github.com/repos/soyuka/core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/soyuka/core/labels{/name}","releases_url":"https://api.github.com/repos/soyuka/core/releases{/id}","deployments_url":"https://api.github.com/repos/soyuka/core/deployments","created_at":"2015-08-24T08:32:34Z","updated_at":"2016-10-27T06:14:36Z","pushed_at":"2017-04-01T07:24:43Z","git_url":"git://github.com/soyuka/core.git","ssh_url":"git@github.com:soyuka/core.git","clone_url":"https://github.com/soyuka/core.git","svn_url":"https://github.com/soyuka/core","homepage":"https://api-platform.com","size":4101,"stargazers_count":0,"watchers_count":0,"language":"PHP","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"api-platform:2.0","ref":"2.0","sha":"dfce158deffbe2948e7c9d1f425ec0a1c717555e","user":{"login":"api-platform","id":13420081,"avatar_url":"https://avatars0.githubusercontent.com/u/13420081?v=3","gravatar_id":"","url":"https://api.github.com/users/api-platform","html_url":"https://github.com/api-platform","followers_url":"https://api.github.com/users/api-platform/followers","following_url":"https://api.github.com/users/api-platform/following{/other_user}","gists_url":"https://api.github.com/users/api-platform/gists{/gist_id}","starred_url":"https://api.github.com/users/api-platform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/api-platform/subscriptions","organizations_url":"https://api.github.com/users/api-platform/orgs","repos_url":"https://api.github.com/users/api-platform/repos","events_url":"https://api.github.com/users/api-platform/events{/privacy}","received_events_url":"https://api.github.com/users/api-platform/received_events","type":"Organization","site_admin":false},"repo":{"id":29501260,"name":"core","full_name":"api-platform/core","owner":{"login":"api-platform","id":13420081,"avatar_url":"https://avatars0.githubusercontent.com/u/13420081?v=3","gravatar_id":"","url":"https://api.github.com/users/api-platform","html_url":"https://github.com/api-platform","followers_url":"https://api.github.com/users/api-platform/followers","following_url":"https://api.github.com/users/api-platform/following{/other_user}","gists_url":"https://api.github.com/users/api-platform/gists{/gist_id}","starred_url":"https://api.github.com/users/api-platform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/api-platform/subscriptions","organizations_url":"https://api.github.com/users/api-platform/orgs","repos_url":"https://api.github.com/users/api-platform/repos","events_url":"https://api.github.com/users/api-platform/events{/privacy}","received_events_url":"https://api.github.com/users/api-platform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/api-platform/core","description":"The Hypermedia REST API component of API Platform: JSON-LD and Hydra support, works with Symfony too","fork":false,"url":"https://api.github.com/repos/api-platform/core","forks_url":"https://api.github.com/repos/api-platform/core/forks","keys_url":"https://api.github.com/repos/api-platform/core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/api-platform/core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/api-platform/core/teams","hooks_url":"https://api.github.com/repos/api-platform/core/hooks","issue_events_url":"https://api.github.com/repos/api-platform/core/issues/events{/number}","events_url":"https://api.github.com/repos/api-platform/core/events","assignees_url":"https://api.github.com/repos/api-platform/core/assignees{/user}","branches_url":"https://api.github.com/repos/api-platform/core/branches{/branch}","tags_url":"https://api.github.com/repos/api-platform/core/tags","blobs_url":"https://api.github.com/repos/api-platform/core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/api-platform/core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/api-platform/core/git/refs{/sha}","trees_url":"https://api.github.com/repos/api-platform/core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/api-platform/core/statuses/{sha}","languages_url":"https://api.github.com/repos/api-platform/core/languages","stargazers_url":"https://api.github.com/repos/api-platform/core/stargazers","contributors_url":"https://api.github.com/repos/api-platform/core/contributors","subscribers_url":"https://api.github.com/repos/api-platform/core/subscribers","subscription_url":"https://api.github.com/repos/api-platform/core/subscription","commits_url":"https://api.github.com/repos/api-platform/core/commits{/sha}","git_commits_url":"https://api.github.com/repos/api-platform/core/git/commits{/sha}","comments_url":"https://api.github.com/repos/api-platform/core/comments{/number}","issue_comment_url":"https://api.github.com/repos/api-platform/core/issues/comments{/number}","contents_url":"https://api.github.com/repos/api-platform/core/contents/{+path}","compare_url":"https://api.github.com/repos/api-platform/core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/api-platform/core/merges","archive_url":"https://api.github.com/repos/api-platform/core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/api-platform/core/downloads","issues_url":"https://api.github.com/repos/api-platform/core/issues{/number}","pulls_url":"https://api.github.com/repos/api-platform/core/pulls{/number}","milestones_url":"https://api.github.com/repos/api-platform/core/milestones{/number}","notifications_url":"https://api.github.com/repos/api-platform/core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/api-platform/core/labels{/name}","releases_url":"https://api.github.com/repos/api-platform/core/releases{/id}","deployments_url":"https://api.github.com/repos/api-platform/core/deployments","created_at":"2015-01-19T23:05:56Z","updated_at":"2017-04-02T22:06:20Z","pushed_at":"2017-04-01T07:29:14Z","git_url":"git://github.com/api-platform/core.git","ssh_url":"git@github.com:api-platform/core.git","clone_url":"https://github.com/api-platform/core.git","svn_url":"https://github.com/api-platform/core","homepage":"https://api-platform.com","size":4116,"stargazers_count":404,"watchers_count":404,"language":"PHP","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":118,"mirror_url":null,"open_issues_count":107,"forks":118,"open_issues":107,"watchers":404,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/api-platform/core/pulls/1022"},"html":{"href":"https://github.com/api-platform/core/pull/1022"},"issue":{"href":"https://api.github.com/repos/api-platform/core/issues/1022"},"comments":{"href":"https://api.github.com/repos/api-platform/core/issues/1022/comments"},"review_comments":{"href":"https://api.github.com/repos/api-platform/core/pulls/1022/comments"},"review_comment":{"href":"https://api.github.com/repos/api-platform/core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/api-platform/core/pulls/1022/commits"},"statuses":{"href":"https://api.github.com/repos/api-platform/core/statuses/7a5903572c29370043cdf1f8979724a30c130829"}}}}
{"actor":{"display_login":"teohhanhui"}}