public function testFind() { // find one $result = ArticleIndex::find(); $this->assertTrue($result instanceof ActiveQuery); $article = $result->one(); $this->assertTrue($article instanceof ArticleIndex); // find all $articles = ArticleIndex::find()->all(); $this->assertEquals(2, count($articles)); $this->assertTrue($articles[0] instanceof ArticleIndex); $this->assertTrue($articles[1] instanceof ArticleIndex); // find fulltext $article = ArticleIndex::findOne(2); $this->assertTrue($article instanceof ArticleIndex); $this->assertEquals(2, $article->id); // find by column values $article = ArticleIndex::findOne(['id' => 2, 'author_id' => 2]); $this->assertTrue($article instanceof ArticleIndex); $this->assertEquals(2, $article->id); $this->assertEquals(2, $article->author_id); $article = ArticleIndex::findOne(['id' => 2, 'author_id' => 1]); $this->assertNull($article); // find by attributes $article = ArticleIndex::find()->where(['author_id' => 2])->one(); $this->assertTrue($article instanceof ArticleIndex); $this->assertEquals(2, $article->id); // find custom column $article = ArticleIndex::find()->select(['*', '(5*2) AS custom_column'])->where(['author_id' => 1])->one(); $this->assertEquals(1, $article->id); $this->assertEquals(10, $article->custom_column); // find count, sum, average, min, max, scalar $this->assertEquals(2, ArticleIndex::find()->count()); $this->assertEquals(1, ArticleIndex::find()->where('id=1')->count()); $this->assertEquals(3, ArticleIndex::find()->sum('id')); $this->assertEquals(1.5, ArticleIndex::find()->average('id')); $this->assertEquals(1, ArticleIndex::find()->min('id')); $this->assertEquals(2, ArticleIndex::find()->max('id')); $this->assertEquals(2, ArticleIndex::find()->select('COUNT(*)')->scalar()); // scope $this->assertEquals(1, ArticleIndex::find()->favoriteAuthor()->count()); // asArray $article = ArticleIndex::find()->where('id=2')->asArray()->one(); unset($article['add_date']); $this->assertEquals(['id' => '2', 'author_id' => '2', 'tag' => '3,4'], $article); // indexBy $articles = ArticleIndex::find()->indexBy('author_id')->orderBy('id DESC')->all(); $this->assertEquals(2, count($articles)); $this->assertTrue($articles['1'] instanceof ArticleIndex); $this->assertTrue($articles['2'] instanceof ArticleIndex); // indexBy callable $articles = ArticleIndex::find()->indexBy(function ($article) { return $article->id . '-' . $article->author_id; })->orderBy('id DESC')->all(); $this->assertEquals(2, count($articles)); $this->assertTrue($articles['1-1'] instanceof ArticleIndex); $this->assertTrue($articles['2-2'] instanceof ArticleIndex); }
public function testFindLazy() { /** @var ArticleIndex $article */ $article = ArticleIndex::findOne(['id' => 2]); // has one : $this->assertFalse($article->isRelationPopulated('source')); $source = $article->source; $this->assertTrue($article->isRelationPopulated('source')); $this->assertTrue($source instanceof ArticleDb); $this->assertEquals(1, count($article->relatedRecords)); // has many : /*$this->assertFalse($article->isRelationPopulated('tags')); $tags = $article->tags; $this->assertTrue($article->isRelationPopulated('tags')); $this->assertEquals(3, count($tags)); $this->assertTrue($tags[0] instanceof TagDb);*/ }
public function testFindLazy() { /* @var $article ArticleIndex */ $article = ArticleIndex::findOne(['id' => 2]); // has one : $this->assertFalse($article->isRelationPopulated('source')); $source = $article->source; $this->assertTrue($article->isRelationPopulated('source')); $this->assertTrue($source instanceof ArticleDb); $this->assertEquals(1, count($article->relatedRecords)); // has many : $this->assertFalse($article->isRelationPopulated('tags')); $tags = $article->tags; $this->assertTrue($article->isRelationPopulated('tags')); $this->assertEquals(count($article->tag), count($tags)); $this->assertTrue($tags[0] instanceof TagDb); foreach ($tags as $tag) { $this->assertTrue(in_array($tag->id, $article->tag)); } }