Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एकाधिक जहां में

यह बहुत ही रोचक प्रश्न है।

0 =1 हमेशा असत्य रहेगा, इसलिए आपकी क्वेरी शून्य पंक्तियाँ लौटाएगी। लेकिन ऐसा क्यों है?

क्योंकि सेट करके

->whereIn('size', $size)

लारवेल मानता है कि आप हमेशा चाहते हैं कि लौटाई गई पंक्तियाँ पास की गई सरणी में से किसी एक आकार के साथ हों। यदि आप सरणी में कोई मान पास नहीं करते हैं, तो Laravel ऐसा नहीं कर सकता where size IN () क्योंकि यह सिंटैक्स त्रुटि होगी (आप मूल रूप से कहते हैं कि मुझे इस आकार से मेल खाने वाली सभी पंक्तियां दें, लेकिन आप आकार पास नहीं करते हैं)। तो अगर सरणी खाली है तो यह सिर्फ 0 = 1 puts डालता है ।

लारवेल को यह बताने के लिए कि यदि कोई आकार पारित नहीं हुआ है, तो आकार के लिए शर्त नहीं जोड़ने के लिए बस उससे पहले एक साधारण जांच करें।

$product = new Product;

if (!empty($sizes)) {
    $product = $product->whereIn('size', $sizes);
}

$products = $product->get();

बीटीडब्ल्यू यह व्यवहार एक हॉटफिक्स है . लैरावेल के पिछले संस्करणों में, यदि आप खाली सरणी पास करते हैं तो आपके पास सिंटैक्स त्रुटि के लिए अपवाद फेंक दिया गया था। अब इसे केवल 1 = 0 . सेट करके नियंत्रित किया जाता है




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL मैच अगेंस्ट मल्टीपल वैल्यूज़ के साथ AGAINST

  2. MySQL - उस नाम का चयन करें जो वर्णानुक्रम में सबसे पहले आता है

  3. क्यों INSERT IGNORE auto_increment प्राथमिक कुंजी को बढ़ाता है?

  4. जावा स्प्रिंग जेपीए पेजिनेशन एक से अधिक पेज पर काम नहीं कर रहा है

  5. मैसकल में कर्सर के पास उपयोगकर्ता के अलावा अन्य अधिकार हैं?