2015-10-26 2 views
2

У меня есть массовый запрос, который создается с помощью CDbCriteria, как показано ниже: -Распечатайте SQL один запрос (Yii 1.x)

$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 в просмотрите запрос, можно ли просто откликнуться на этот единственный запрос (в отличие от того, что Yii покажет мне множество других запросов, которые запускаются на странице).

+1

Самый простой способ я нашел для этого поставить опечатка в SQL, он выдает ошибку и все sql находится на экране! – Coz

ответ

1

можно напечатать запрос, построенный построитель запросов с помощью $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 вернет ваш полный текст запроса

+0

безупречный! точно, что мне нужно спасибо Chetan – Zabs

+0

@ Zabs абсолютное удовольствие :) –

2

Добавьте это в свой конфигурационный файл. Вы можете увидеть запрос и другие данные в нижней части страницы.

'db'=>array(
     'enableProfiling'=>true, 
     'enableParamLogging' => true, 
), 
'log'=>array(
    'class'=>'CLogRouter', 
    'routes'=>array(
     … 
     array(
      'class'=>'CProfileLogRoute', 
      'levels'=>'profile', 
      'enabled'=>true, 
     ), 
    ), 
), 
Смежные вопросы