2012-05-29 27 views
9

वाईआई का उपयोग करके, मैं उन सभी पंक्तियों को हटाना चाहता हूं जो आज से नहीं हैं।मैं वाईआई में पंक्तियों को कैसे हटा सकता हूं?

क्या मेरा समाधान ठीक है?

$query = "delete from `user_login_hash` where `day`!='".(date('Y-m-d',time()))."'"; 

Yii::app()->db->createCommand($query); 

उत्तर

36

एक खूबसूरत समाधान है

YourUserModel::model()->deleteAll("day !='" . date('Y-m-d') . "'"); 
+2

उपयोग कर सकते हैं मैं हमेशा पाया कि deleteAll का उपयोग कर आधारित हटाना सलाह – Orlymee

+0

धन्यवाद दाव की तुलना में धीमी काम करता है, लेकिन एक बेहतर तरीका हालत को पैरामीटर करना है: YourUserModel :: model() -> deleteAll ("day! =: date", array ('date' => date ('ym-d')); आपको समय() की भी आवश्यकता नहीं है, क्योंकि यह अंतर्निहित है। –

+4

+1 मॉडल के लिए के लिए – Eric

2

इस प्रयास करें ...

$query = "delete from `user_login_hash` where `day`!='".(date('Y-m-d',time()))."'"; 
         $query->queryAll($query); 
+0

सलाह –

+0

सलाह के लिए धन्यवाद क्या यह काम करेगा? '$ query' एक स्ट्रिंग नहीं है कोई ऑब्जेक्ट! –

10

बेहतर उपयोगकर्ता पीडीओ मापदंडों और आदेश पर आप भी है execute

$query = "delete from `user_login_hash` where `day`<> :date"; 
$command = Yii::app()->db->createCommand($query); 
$command->execute(array('date' => date('Y-m-d'))); 

कॉल करने के लिए या

UserLoginHash::model()->deleteAll(
    'day <> :date', 
    array('date' => date('Y-m-d')) 
); 
+2

सलाह के लिए धन्यवाद –

+0

पीडीओ इस स्थिति में 10 गुना तेजी से है! – realtebo

+0

@realtebo इस प्रश्न में सभी मामलों का उपयोग पीडीओ –

संबंधित मुद्दे