2016-08-18 4 views
8

मुझे एक थके हुए मुद्दे का सामना करना पड़ रहा है। मैंने अंकन के लिए कोड लिखा है। सबकुछ अपेक्षित के रूप में काम कर रहा है, लेकिन केवल शर्तें काम नहीं कर रही हैं (केवल कुछ स्थितियां) यहां अंकन के लिए मेरा कोड है।केक पीएचपी पेजिनेटर मुद्दा

//declaration 
public $paginate = array(
     'limit' => 50, 
     'paramType' => 'querystring' 
    ); 
//use in action 
$this->paginate['ApiLog'] = array('limit' => 50, 'order' => 'ApiLog.id DESC', 'paramType' => 'querystring'); 

$this->paginate['ApiLog']['conditions'] = array('ApiLog.log_type' => 2); 
$this->paginate['ApiLog']['joins'] = array(    
      array(
       'table' => 'users', 
       'alias' => 'User', 
       'type' => 'LEFT', 
       'conditions' => array('User.id = ApiLog.user_id') 
      )     
     ); 
$this->Paginator->settings = $this->paginate['ApiLog']; 
$apilogs = $this->Paginator->paginate('ApiLog'); 

इस कोड को विकास के वातावरण पर प्रधान काम कर रहा है और वापसी लॉग टाइप 2 है, लेकिन उत्पादन में यह केवल लॉग टाइप किया है 1. मैं बिताया है पूरे दिन के मुद्दे यह पता लगाने की वापसी। यदि मैं conditions array में कोई अन्य शर्त जोड़ता हूं जो प्रभावी होता है लेकिन log_type नहीं है। मैं क्वेरी लॉग प्रिंट करता हूं, where clause में यह हमेशा log_type = '1' दिखाता है मैंने कैश को भी साफ़ कर दिया है। किसी भी मदद की सराहना की, धन्यवाद।

+0

अपने 'tmp/cache' फ़ोल्डर को हटाने का प्रयास करें – om1

उत्तर

2

मैं इस मुद्दे तय कर दी है, यह समस्या डेटाबेस में घोषित data type के कारण था। उत्पादन में यह tinyint(1) था और विकास में इसे int(1) दिया गया। यह दोनों पर्यावरण में डेटाबेस में सही मूल्य को बचा रहा है लेकिन स्थिति में tinyint(1) केवल 0 & 1 के साथ काम नहीं कर रहा है।

मुझे इसके पीछे कारण नहीं समझा।

2

यदि आपका कोड स्थानीय मशीन में ठीक काम कर रहा है लेकिन उत्पादन में काम नहीं कर रहा है तो आपको tmp/cache/model और tmp/cahe/persistance में सभी फ़ाइलों को साफ़ करना होगा। सुनिश्चित करें कि आपने tmp फ़ोल्डर को लिखने योग्य अनुमति दी है।

इसका मतलब है कि जब आप नया फ़ील्ड जोड़ते हैं, मौजूदा फ़ील्ड को हटाते हैं या डेटाबेस स्कीमा में कोई भी परिवर्तन करते हैं तो आपको केक मॉडल स्कीमा अपडेट करना होगा। उत्पादन मोड में यदि स्कीमा कैश फ़ाइल नहीं मिली तो यह डेटाबेस पर मौजूदा स्कीमा के आधार पर नई कैश फाइलें बनाएगी। प्रत्येक निष्पादन पर विकास मोड में यह स्कीमा कैश अपडेट करेगा।

अभी भी अंकन में इसकी समस्या है तो आपको केकेपीएचपी 2.x दस्तावेज़ीकरण का पालन करना होगा। यहां मुझे लगता है कि आपका कोड ApiLogsController में है और विधि index है। दस्तावेज के अनुसार आपका कोड होना चाहिए।

public function index() { 
    $this->Paginator->settings = array(
     'limit' => 50, 
     'order' => 'ApiLog.id DESC' 
     'paramType' => 'querystring', 
     'conditions'=> array('ApiLog.log_type' => 2), 
     'recursive'=>-1, // should be used with joins 
     'joins'=>array(
      array(
       'table'=>'users', 
       'type'=>'LEFT', 
       'alias'=>'User', 
       'conditions'=>array('User.id = ApiLog.user_id') 
      ) 
     ) 
    ); 
    $data = $this->Paginator->paginate('ApiLog'); 
    $this->set(compact('data')); 
} 

या

// your default setting in ApiLogController class 
public $components = array('Paginator'); 
public $paginate = array(
    'limit' => 50, 
    'paramType' => 'querystring' 
); 

public function index() { 
// overriding/extending default settings 

$this->Paginator->settings['order']='ApiLog.id DESC'; 
$this->Paginator->settings['conditions']=array('ApiLog.log_type' => 2), 
$this->Paginator->settings['recursive']= -1; 
$this->Paginator->settings['joins']=array(
     array(
      'table'=>'users', 
      'type'=>'LEFT', 
      'alias'=>'User', 
      'conditions'=>array('User.id = ApiLog.user_id') 
     ) 
    ); 

$data = $this->Paginator->paginate('ApiLog'); 
$this->set(compact('data')); 
} 
+0

मैंने पहले से ही कैश साफ़ कर दिया है। इसके अलावा मेरी पेजिनेटर सेटिंग्स सही हैं। मैं सेटिंग में कोई अन्य शर्त जोड़ता हूं तो यह – Karan

+0

@ करन काम करता है, तो अब आपकी समस्या हल हो गई है? –

+0

नहीं, समस्या अभी भी – Karan

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