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. 文字列からlat/lngを取得する正規表現
- 3. Javascriptの正規表現 - 文字列のHTMLからdivのIDを取得
- 4. 文字列の配列を取得する正規表現
- 5. 正規表現を使用して文字列パターンから数字を取得
- 6. 現在の日付からGMT文字列を取得
- 7. vb.netの正規表現マッチから文字列を取得するには?
- 8. 文字列からの文字の読み取りまたは文字列からの文字の取得
- 9. 文字列から部分文字列を取り出す正規表現
- 10. JComboBoxの項目を取得する文字列の表現
- 11. 文字列の正規表現文字列を取り除く
- 12. 正規表現文字列から文字列
- 13. MultipartFormDataContentの文字列表現を取得する方法
- 14. mongoose:クエリの文字列表現を取得する方法
- 15. SQL DateTimeの文字列表現を取得する
- 16. 正規表現は文字列の一部を取得
- 17. XMLノードの文字列表現を取得する
- 18. 文字列の整数表現を取得する方法
- 19. SecKeyの文字列表現を取得する
- 20. Javascript:正規表現は文字列から2行目を取得する
- 21. 正規表現に基づいて文字列から値を取得
- 22. 文字列から文字列の後に文字列を取得します
- 23. 文字列表示のオプションの取得
- 24. 正規表現に文字が到達するまでの文字列を取得する正規表現
- 25. 変数から文字列の最後の文字を取得
- 26. 正規表現での正規表現9文字の文字列からの数字のタイプ
- 27. パス文字列から現在のOS /フィルタ無効な文字の有効なパス文字を取得
- 28. 文字列の終わりから最初の出現までの文字列のデータを取得する
- 29. C#(MessageQueueErrorCode)のビットフィールド列挙の文字列表現を取得するには?
- 30. 文字列から大文字のインデックスを取得します
'CDbCriteria'は、完全なクエリを構築するのに十分な情報を集約しません。モデルクラスには相当量の関連情報が含まれているため、両方を含める必要があります。 – Jon