Laravel Eloquent में sql_mode=only_full_group_by के साथ असंगति
त्रुटि का सामना करना पड़ रहा है "SELECT सूची का एक्सप्रेशन #1 ग्रुप बाय क्लॉज में नहीं है.. ।" ग्रुपिंग के साथ एक सुवक्ता क्वेरी निष्पादित करते समय एक असंगति का सुझाव मिलता है MySQL का sql_mode=only_full_group_by. इसे हल करने के लिए:
MySQL स्ट्रिक्ट मोड को अक्षम करें
एक समाधान यह है कि आप अपने डेटाबेस कनेक्शन कॉन्फ़िगरेशन में MySQL स्ट्रिक्ट मोड सेटिंग को अक्षम करें। लारवेल की .env फ़ाइल में, निम्न पंक्ति जोड़ें:
DB_STRICT_MODE=false
वैकल्पिक रूप से, आप अपनी config/database.php फ़ाइल में सख्त मोड को कॉन्फ़िगर कर सकते हैं:
'mysql' => [
// Disable strict mode
'strict' => false,
],
स्पष्टीकरण
MySQL 5.7 और बाद में, sql_mode=only_full_group_by मोड के लिए आवश्यक है कि SELECT सूची के सभी कॉलम या तो GROUP BY क्लॉज में शामिल हों या हों एकत्रित कार्य. प्रदान की गई क्वेरी में:
$products = Product::where('status', 1)
->where('stock', '>', 0)
->where('category_id', '=', $category_id)
->groupBy('store_id')
->orderBy('updated_at', 'desc')
->take(4)
->get();
कॉलम आईडी (प्राथमिक कुंजी) चयन सूची में दिखाई देती है लेकिन ग्रुप बाय क्लॉज में शामिल नहीं है। सख्त मोड को अक्षम करके, MySQL SELECT सूची में गैर-एकत्रित कॉलम की अनुमति देगा जो कार्यात्मक रूप से GROUP BY कॉलम पर निर्भर नहीं हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3