打印出 SQL 单个查询 (Yii 1.x)

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

我有一个使用 CDbCriteria 生成的大量查询,如下所示:-

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

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

我知道我可以使用 Yii 的 'logging' 功能来查看查询,是否可以只回显这个单个查询(而不是让 Yii 向我显示大量其他正在处理的查询 运行 在页面上)。

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,
        ),
    ),
),

您可以使用 $command->text 打印由查询构建器构建的查询。 在您的示例代码中将是:

    $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 将 return 您的完整查询文本