केकेपीएचपी मॉडल और पूछताछ की समस्याएं

मैं केकेपीएचपी 2.3.8 का उपयोग कर रहा हूं और मुझे केक को सही तरीके से खोजने के लिए परेशानी हो रही है। ऐसा लगता है कि मामला संवेदनशील नहीं है। मैं 'user.id' की खोज कर रहा हूं और क्वेरी परिणाम यह 'user.id' के रूप में दिखाई देता है

users table
id  |   username   | password  |  email   | created

मैं अपने आरक्षण नियंत्रक में उपयोगकर्ता द्वारा बनाई गई तारीख को खोजने का प्रयास कर रहा हूं

$this->loadmodel('User');
$date = $this->User->find('first',array(
                                    'conditions' => array(
                                        'User.id' => $id    //note: 'id' => $id gives the same results
                                     )
                          ));

मुझे निम्नलिखित त्रुटि मिलती है

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user.id' in 'where clause'
SQL Query: SELECT `User`.`created` FROM `TestDB`.`users` AS `User` WHERE `user`.`id` = 1 LIMIT 1

जब मैं क्वेरी को PHPMyadmin में कॉपी करता हूं और 'user.id' को 'user.id' में बदलता हूं तो यह काम करता है। केक आपको लोअरकेस क्यों बना रहा है, भले ही मैं इसे अपनी क्वेरी में कैपिटल करता हूं? यदि मैं इसे 'users.id' केक में बदलता हूं तो केक एक अप्सक्रोज़ यू के साथ खोज करेगा और एस जोड़ता है, लेकिन यह वही नहीं है जो मैं चाहता हूं।

मैंने अपने उपयोगकर्ता मॉडल में public $ primaryKey = 'id'; के साथ प्राथमिक कुंजी जोड़ने का प्रयास किया लेकिन उसने कुछ भी नहीं किया। वर्तमान में, मेरे उपयोगकर्ता मॉडल में प्राथमिक कुंजी के लिए मेरे पास कोई संदर्भ नहीं है, इसलिए मुझे यकीन नहीं है कि यह 'user.id' की खोज करने का निर्णय क्यों ले रहा है, भले ही मैं विशेष रूप से अपनी खोज में 'user.id' का संदर्भ देता हूं। वास्तव में, मेरे उपयोगकर्ता मॉडल में एकमात्र चीज फॉर्म सत्यापन के लिए है।

0
आम तौर पर केकपीएचपी को इसे सही तरीके से उद्धृत करने के अलावा, कुंजी को संशोधित नहीं करना चाहिए। सबसे पहले अपने कैश (/app/tmp/cache/) को साफ़ करने का प्रयास करें, यह अक्सर मॉडल/डीबी/स्कीमा से संबंधित समस्याओं को हल करता है। क्या आपने इसे एक सामान्य केकपीएचपी इंस्टॉलेशन और एक डमी मॉडल के साथ परीक्षण किया है, यह जांचने के लिए कि क्या यह एक सामान्य समस्या है? नवीनतम 2.4.3 के साथ भी ऐसा ही होता है?
जोड़ा लेखक ndm, स्रोत

1 उत्तर

You do not need to Add modelName in Query if its for Same Model.. Retriving data

$this->loadModel('User');
$date = $this->User->find('first',array(
                                    'conditions' => array(
                                        'id' => $id
                                     )
                          ));
0
जोड़ा
यह काम नहीं करता है और कोई फर्क नहीं पड़ता। यही कारण है कि मैंने पहली जगह 'User.id' क्यों रखा। मॉडल नाम का संदर्भ देने से क्वेरी को कोई दिक्कत नहीं होगी। यदि मेरे मॉडल को स्थापित किया गया है कि किसी अन्य तालिका के साथ कई रिश्ते हैं जिसमें समान कॉलम नाम है (आईडी नहीं है), तो यह आवश्यक होगा या अन्यथा यह कॉलम अस्पष्ट हो जाएगा। मेरी इच्छा है कि आप स्टैक ओवरव्लो पर लोग रेडडिट की तरह नहीं थे, जो कुछ भी कम करने के लिए इतनी जल्दी हो
जोड़ा लेखक user1443519, स्रोत