getConnection(false); $sql = 'SELECT [[id]], [[t.name]] FROM {{customer}} t'; $command = $db->createCommand($sql); $this->assertEquals('SELECT `id`, `t`.`name` FROM `customer` t', $command->sql); } /** * @dataProvider upsertProvider * @param array $firstData * @param array $secondData */ public function testUpsert(array $firstData, array $secondData) { if (version_compare($this->getConnection(false)->getServerVersion(), '3.8.3', '<')) { $this->markTestSkipped('SQLite < 3.8.3 does nt support "WITH" keyword.'); return; } parent::testUpsert($firstData, $secondData); } public function testAddDropPrimaryKey() { $this->markTestSkipped('SQLite does not support adding/dropping primary keys.'); } public function testAddDropForeignKey() { $this->markTestSkipped('SQLite does not support adding/dropping foreign keys.'); } public function testAddDropUnique() { $this->markTestSkipped('SQLite does not support adding/dropping unique constraints.'); } public function testAddDropCheck() { $this->markTestSkipped('SQLite does not support adding/dropping check constraints.'); } public function testMultiStatementSupport() { $db = $this->getConnection(false); $sql = <<<'SQL' DROP TABLE IF EXISTS {{T_multistatement}}; CREATE TABLE {{T_multistatement}} ( [[intcol]] INTEGER, [[textcol]] TEXT ); INSERT INTO {{T_multistatement}} VALUES(41, :val1); INSERT INTO {{T_multistatement}} VALUES(42, :val2); SQL; $db->createCommand($sql, [ 'val1' => 'foo', 'val2' => 'bar', ])->execute(); $this->assertSame([ [ 'intcol' => '41', 'textcol' => 'foo', ], [ 'intcol' => '42', 'textcol' => 'bar', ], ], $db->createCommand('SELECT * FROM {{T_multistatement}}')->queryAll()); $sql = <<<'SQL' UPDATE {{T_multistatement}} SET [[intcol]] = :newInt WHERE [[textcol]] = :val1; DELETE FROM {{T_multistatement}} WHERE [[textcol]] = :val2; SELECT * FROM {{T_multistatement}} SQL; $this->assertSame([ [ 'intcol' => '410', 'textcol' => 'foo', ], ], $db->createCommand($sql, [ 'newInt' => 410, 'val1' => 'foo', 'val2' => 'bar', ])->queryAll()); } }