public function testDistinctObject()
 {
     $b = new SelectBuilder();
     $b->root('Article');
     $b->count(DB::distinct(Article::table()->getPrimaryKey()));
     $b->select(['*'], false);
     $components = $b->build();
     $c = new BaseCompiler();
     $sql = $c->compileSelect($components);
     $expected = 'SELECT * ,COUNT(DISTINCT `id`) FROM `articles`';
     $this->assertEquals($expected, $sql);
 }
 public function testCompileDistinct()
 {
     $components = ['columns' => ['_' => ['columns' => ['blogId' => 'blog_id', 'id' => 'id'], 'resAlias' => '']], 'from' => [new JoinClause('articles', '_')], 'distinct' => true];
     $expected = 'SELECT DISTINCT `blog_id` AS `blogId`,`id` AS `id` FROM `articles`';
     $c = new BaseCompiler();
     $this->assertEquals($expected, $c->compileSelect($components));
     $components['columns'] = ['_' => ['columns' => ['*'], 'resAlias' => '']];
     $expected = 'SELECT DISTINCT * FROM `articles`';
     $this->assertEquals($expected, $c->compileSelect($components));
 }