Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Print out a SQL single query (Yii 1.x)

I have a massive query that is generated using CDbCriteria as shown below:-

$schema = Yii::app()->db->schema;
$builder = $schema->commandBuilder;

// how to echo out this query?
$command = $builder->createFindCommand($schema->getTable('myuser'), $criteria);
$results = $command->queryAll();

I know I can use the 'logging' feature of Yii to view the query, is it possible to just echo out this single query (as opposed to having Yii show me tons of other queries that are being run on the page).

like image 952
Zabs Avatar asked Oct 26 '15 11:10

Zabs


2 Answers

you can print query built by query builder by using $command->text. In your example code will be:

    $schema = Yii::app()->db->schema;
    $builder = $schema->commandBuilder;
    $criteria = new CDbCriteria();
    $command = $builder->createFindCommand($schema->getTable('name_of_table'), $criteria);
    $results = $command->text;
    echo $results;

$command->text will return your complete query text

like image 125
Chetan Ameta Avatar answered Oct 15 '22 16:10

Chetan Ameta


Add this in your config file. You can see the query and other details at the bottom of the page.

'db'=>array(
        'enableProfiling'=>true,
        'enableParamLogging' => true,
),
'log'=>array(
    'class'=>'CLogRouter',
    'routes'=>array(
        …
        array(
            'class'=>'CProfileLogRoute',
            'levels'=>'profile',
            'enabled'=>true,
        ),
    ),
),
like image 20
Nuriddin Rashidov Avatar answered Oct 15 '22 16:10

Nuriddin Rashidov