2015-11-13 7 views
6

लैरवेल के where और whereLoose विधियों के बीच क्या अंतर है?लार्वेल जहां() बनाम जहां लूज() विधियां

प्रलेखन कहते हैं:

where():

जहां विधि सख्त तुलना उपयोग करता है जब आइटम मूल्यों की जाँच। "ढीले" तुलनाओं का उपयोग करके फ़िल्टर करने के लिए कहां लॉस विधि का उपयोग करें।

whereLoose():

इस विधि जहां विधि के समान हस्ताक्षर है; हालांकि, सभी मानों की तुलना "ढीली" तुलनाओं से की जाती है।

इस मामले में, "ढीली तुलना" का क्या अर्थ है?

उत्तर

11

where विधि सख्त तुलना (===) का उपयोग करती है, जिसका अर्थ यह भी मूल्य के प्रकार की जांच करता है। यदि, उदाहरण के लिए, एक स्ट्रिंग है और दूसरा नंबर है, तो यह कभी मेल नहीं खाएगा।

whereLoose विधि ढीली तुलना (==) का उपयोग करती है, जिसका अर्थ है कि यह मान के प्रकार की जांच नहीं करेगा। यदि, उदाहरण के लिए, एक स्ट्रिंग है और दूसरा नंबर है, तो यह तब भी मेल खाएगा जब उनके मान समान हों।

$collection = collect([['price' => 100], ['price' => 200]]); 

$collection->where('price', '100'); // [] 

$collection->whereLoose('price', '100'); // [['price' => 100]] 

आप the PHP docs में सभी मतभेदों की एक तालिका पा सकते हैं।


नोट: इस Laravel 5.3 में बदलने के बारे में है: where विधि अब ढीला तुलना का उपयोग करेगा और whereLoose विधि निकाल दिया जाएगा।

$collection = collect([['price' => 100], ['price' => 200]]); 

$collection->where('price', '100'); // [['price' => 100]] 

$collection->where('price', '===', '100'); // [] 
+1

[प्रलेखन] (http://php.net/manual/en/types.comparisons.php) भी परिणाम के बारे में विवरण शामिल हैं: सख्त समानता का उपयोग करने के लिए आपको 2 तर्क के रूप में === पास भेज देंगे दोनों ऑपरेटर का उपयोग करते समय तुलना की तुलना में। –

+0

धन्यवाद दोस्तों। क्या यह संभव है कि कोड की एक ही पंक्ति: $ टैग = ($ type == 'paid')? 0: 1; $ अनुबंध = $ उपयोगकर्ता-> addressbook_user-> जहां ('paid_or_not', $ टैग); pay_or_not tinyint के रूप में, दो अलग ओएस (उबंटू और मैक ओएस एक्स योसेमेट) पर, लेकिन उसी mysql संस्करण के साथ, मुझे दो अलग-अलग परिणाम दिए? इसके बजाय जहां लूज ने एक ही सही परिणाम दिया? @edit: ठीक है मैं PHP मैनुअल पर टेबल की जांच करूंगा। – Jacson

+0

वास्तव में आपकी अच्छी जानकारी के लिए धन्यवाद। – antoniputra

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