framework/db/sqlite/Schema.php
protected function loadTableChecks($tableName)
    {
        $sql = $this->db->createCommand('SELECT `sql` FROM `sqlite_master` WHERE name = :tableName', [
            ':tableName' => $tableName,
        ])->queryScalar();
        /** @var $code SqlToken[]|SqlToken[][]|SqlToken[][][] */
        $code = (new SqlTokenizer($sql))->tokenize();
        $pattern = (new SqlTokenizer('any CREATE any TABLE any()'))->tokenize();
        if (!$code[0]->matches($pattern, 0, $firstMatchIndex, $lastMatchIndex)) {
            return [];
        }

        $createTableToken = $code[0][$lastMatchIndex - 1];
        $result = [];
        $offset = 0;
        while (true) {
            $pattern = (new SqlTokenizer('any CHECK()'))->tokenize();
            if (!$createTableToken->matches($pattern, $offset, $firstMatchIndex, $offset)) {
                break;
            }

            $checkSql = $createTableToken[$offset - 1]->getSql();
            $name = null;
            $pattern = (new SqlTokenizer('CONSTRAINT any'))->tokenize();
            if (isset($createTableToken[$firstMatchIndex - 2]) && $createTableToken->matches($pattern, $firstMatchIndex - 2)) {
                $name = $createTableToken[$firstMatchIndex - 1]->content;
            }
            $result[] = new CheckConstraint([
                'name' => $name,
                'expression' => $checkSql,
            ]);
        }

        return $result;
    }
protected function loadTableChecks($tableName)
    {
        $sql = $this->db->createCommand('SELECT `sql` FROM `sqlite_master` WHERE name = :tableName', [
            ':tableName' => $tableName,
        ])->queryScalar();
        /** @var $code SqlToken[]|SqlToken[][]|SqlToken[][][] */
        $code = (new SqlTokenizer($sql))->tokenize();
        $pattern = (new SqlTokenizer('any CREATE any TABLE any()'))->tokenize();
        if (!$code[0]->matches($pattern, 0, $firstMatchIndex, $lastMatchIndex)) {
            return [];
        }

        $createTableToken = $code[0][$lastMatchIndex - 1];
        $result = [];
        $offset = 0;
        while (true) {
            $pattern = (new SqlTokenizer('any CHECK()'))->tokenize();
            if (!$createTableToken->matches($pattern, $offset, $firstMatchIndex, $offset)) {
                break;
            }

            $checkSql = $createTableToken[$offset - 1]->getSql();
            $name = null;
            $pattern = (new SqlTokenizer('CONSTRAINT any'))->tokenize();
            if (isset($createTableToken[$firstMatchIndex - 2]) && $createTableToken->matches($pattern, $firstMatchIndex - 2)) {
                $name = $createTableToken[$firstMatchIndex - 1]->content;
            }
            $result[] = new CheckConstraint([
                'name' => $name,
                'expression' => $checkSql,
            ]);
        }

        return $result;
    }
protected function loadTableChecks ( $ tableName ) { $ sql = $ this -> db -> createCommand ( 'SELECT `sql` FROM `sqlite_master` WHERE name = :tableName' , [ ':tableName' => $ tableName , ] ) -> queryScalar ( ) ; /** @var $code SqlToken[]|SqlToken[][]|SqlToken[][][] */ $ code = ( new SqlTokenizer ( $ sql ) ) -> tokenize ( ) ; $ pattern = ( new SqlTokenizer ( 'any CREATE any TABLE any()' ) ) -> tokenize ( ) ; if ( ! $ code [ 0 ] -> matches ( $ pattern , 0 , $ firstMatchIndex , $ lastMatchIndex ) ) { return [ ] ; } $ createTableToken = $ code [ 0 ] [ $ lastMatchIndex - 1 ] ; $ result = [ ] ; $ offset = 0 ; while ( true ) { $ pattern = ( new SqlTokenizer ( 'any CHECK()' ) ) -> tokenize ( ) ; if ( ! $ createTableToken -> matches ( $ pattern , $ offset , $ firstMatchIndex , $ offset ) ) { break ; } $ checkSql = $ createTableToken [ $ offset - 1 ] -> getSql ( ) ; $ name = null ; $ pattern = ( new SqlTokenizer ( 'CONSTRAINT any' ) ) -> tokenize ( ) ; if ( isset ( $ createTableToken [ $ firstMatchIndex - 2 ] ) && $ createTableToken -> matches ( $ pattern , $ firstMatchIndex - 2 ) ) { $ name = $ createTableToken [ $ firstMatchIndex - 1 ] -> content ; } $ result [ ] = new CheckConstraint ( [ 'name' => $ name , 'expression' => $ checkSql , ] ) ; } return $ result ; }
{@inheritdoc}
{