yiic.php का उपयोग कर आप आवेदन लॉग में निष्पादित प्रश्नों लॉग इन करें और भली-भांति समझ सकते हैं। कॉन्फ़िग फ़ाइल में कुछ इस तरह:
'components' => array(
'db'=>array(
'enableParamLogging' => true,
),
'log'=>array(
'class'=>'CLogRouter',
'routes'=>array(
array(
'class'=>'CFileLogRoute',
'levels'=>'trace,log',
'categories' => 'system.db.CDbCommand',
'logFile' => 'db.log',
),
),
),
);
कुछ मामलों में (जैसे जब परीक्षण चल रहा है), तो आप भी इस बात के लिए प्रक्रिया के अंत में Yii::app()->log->processLogs(null);
कॉल करने के लिए काम करने के लिए की आवश्यकता होगी।
बेशक, एक बार जब आप वहां हों तो कुछ भी आपको अपना लॉग रूट लिखने से रोक नहीं रहा है जो लॉग संदेशों के साथ कुछ अलग करता है, लेकिन ध्यान दें कि अनुरोध के अंत में लॉग संसाधित होते हैं (या जब आप processLogs
पर कॉल करते हैं) , हर बार जब आप कुछ लॉग इन नहीं करते हैं।
वैसे, आपको क्वेरी में गतिशील इनपुट के साथ इस तरह के प्रश्नों का निर्माण नहीं करना चाहिए। बजाय उपयोग बाँध चर:
$criteria = new CDbCriteria();
$criteria->condition = 't.date BETWEEN :from_date AND :to_date';
$criteria->params = array(
':from_date' => $from_date,
':to_date' => $to_date,
);
$criteria->with = array('order');
$orders = ProductOrder::model()->findAll($criteria);
ऐसा लगता है कि प्रत्यक्ष एसक्यूएल कमांड के साथ डीएओ सीडीबीक्रिटिरिया का उपयोग करने से कहीं अधिक सरल/तेज है? – itachi
परिणाम के साथ आप क्या करना चाहते हैं, इस पर निर्भर करता है, मुझे लगता है। यदि आप मॉडल कार्यक्षमता (उदा। सत्यापन) का उपयोग करना चाहते हैं, तो एआर का उपयोग करना एक स्पष्ट विकल्प है। निजी तौर पर, मैं एआर पसंद करता हूं और डीएओ को केवल जटिल परिस्थितियों के लिए छोड़ देता हूं जैसे कि शामिल होने से जुड़े अपडेट। इस तरह मैं सामान्य परिस्थितियों के लिए मॉडल स्कोप का उपयोग कर सकता हूं और स्कीमा या व्यावसायिक तर्क बदलते समय सभी प्रत्यक्ष आदेशों की मैन्युअल रूप से समीक्षा/अद्यतन नहीं करना पड़ता है। (इसके अलावा, एआर का उपयोग करके हर जगह परिणाम में निहित डेटा तक पहुंचने का एक सतत तरीका है, अगर परिणाम पंक्ति एक ऑब्जेक्ट या सरणी है तो चिंता करने के बिना ...) – DCoder
आपका पॉइंट प्राप्त हुआ। स्पष्टीकरण के लिए thanx। – itachi