CDbCriteriaからクエリの文字列表現を取得する方法はありますか?テストとデバッグのため。CDbCriteriaからの文字列表現の取得
答えて
あなたはこのようなあなたのmain.phpを設定ロギングとプロファイリングを使用することができます。
'components'=>array(
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CWebLogRoute',
'categories'=>'system.db.CDbCommand',
'showInFireBug'=>true,
),
),
),
'db'=>array(
'enableProfiling'=>true,
'enableParamLogging'=>true,
),
),
私がenableProfiling、enableParamLogging、showInFireBug(行方不明だった私の設定の唯一のもの)で行を追加した場合、どうすればSQLを取得できますか?私はFireBugの設定がFireBugのSQLショーを正しいものにすると期待していますか? –
はい、私が覚えている限りです。 – Puigcerber
Puigcerber、私はWindows 7マシンでローカルインスタンスにログオンすることができません。コンソールのタブで、火かき棒のどこにこれを表示する必要がありますか?それがなければどこを見なければならないのですか? SQLを見るには、何かを見るためにLog.Debug($ criteria)のようなことをする必要がありますか? –
私はあなたたちとそれを共有すると考え、この質問への答えを見つけるために多くの時間量を費やしています。これがあなたの貴重な時間を節約することを願っています。
上記のJonが述べたように、CDbCriteria
は、完全なクエリを構築するのに十分な情報を集計していないため、クエリ制約を設定するモデルクラス情報も使用する必要があります。
CDbCriteriaのYiiドキュメントに示されている例のように、これは、あなたがIT-を使用する方法を基本的に
ここ$criteria=new CDbCriteria();
$criteria->compare('status',Post::STATUS_ACTIVE);
$criteria->addInCondition('id',array(1,2,3,4,5,6));
$posts = Post::model()->findAll($criteria);
Post
は、クエリの条件を実行した上でモデルの名前です。
したがって、CDbCriteriaで書かれたクエリのテキスト表現を取得するには、モデル情報も含める必要があります。
これは、あなたがそれを行うことができる方法です - あなたは$query
変数に値を印刷するとき
$model = new Post();
$query = $model->getCommandBuilder()->createFindCommand($model->getTableSchema(), $criteria)->getText();
それは生のクエリを出力します。
これが役に立ちます。
偉大な答えとロギングの設定を変更するよりも良い。最終クエリの唯一の問題は、「:productId」などのプレースホルダがまだ含まれていることです。 – niekoost
- 1. 文字列の配列を取得する正規表現
- 2. 正規表現を使用して文字列パターンから数字を取得
- 3. 現在の日付からGMT文字列を取得
- 4. vb.netの正規表現マッチから文字列を取得するには?
- 5. SQL DateTimeの文字列表現を取得する
- 6. 正規表現は文字列の一部を取得
- 7. XMLノードの文字列表現を取得する
- 8. mongoose:クエリの文字列表現を取得する方法
- 9. 文字列から文字列の後に文字列を取得します
- 10. 変数から文字列の最後の文字を取得
- 11. パス文字列から現在のOS /フィルタ無効な文字の有効なパス文字を取得
- 12. C#(MessageQueueErrorCode)のビットフィールド列挙の文字列表現を取得するには?
- 13. 文字列から大文字のインデックスを取得します
- 14. 文字列からIDを取得
- 15. 文字列からDatetimeを取得
- 16. DropDownListから文字列を取得
- 17. EditTextから文字列を取得
- 18. C#テキストボックスから文字列を取得
- 19. 私はこのような文字列を取得配列、正規表現
- 20. Liquidの文字列から部分文字列を取得しますか?
- 21. 列挙型の文字列表現、NSLog
- 22. 文字列の "$#"のすべての正規表現の一致を取得
- 23. 正規表現を使用して文から特定の文字列を取得する
- 24. スマートASCII文字列表現
- 25. XPathSelectElements =>文字列表現
- 26. 正規表現の文字列からの十進数
- 27. 文字列からの正規表現のIPアドレス
- 28. KMLファイルから文字列配列のジオポイントのリストを取得
- 29. MATLAB、文字列から行列へのユーザ入力の取得
- 30. 文字列の正規表現一致の位置を取得するには?
'CDbCriteria'は、完全なクエリを構築するのに十分な情報を集約しません。モデルクラスには相当量の関連情報が含まれているため、両方を含める必要があります。 – Jon