2017-01-30 12 views
5

मैं भंडारण कर रहा हूँ destinations क्षेत्र के रूप में jsonmysqlJSON खोजें वाक्पटु

में टाइप उदाहरण स्तंभ मान ["Goa", "Moonar", "Kochi"]

मैं सभी पंक्तियां स्थलों

हालांकि इस पंक्ति क्वेरी के रूप में goa से मेल खाता प्राप्त करना चाहते हैं वांछित परिणाम देता है

SELECT * FROM `packages` 
WHERE JSON_CONTAINS(destinations, '["Goa"]'); 

लेकिन क्या उपर्युक्त क्वेरी के समतुल्य बराबर है ??

Laravel संस्करण 5.3

Modelname: Search

+0

संबंधित [आंतरिक प्रस्ताव] (https://github.com/laravel/internals/issues/296)। – sepehr

उत्तर

5

शायद की तरह एक आंशिक रूप से कच्चे क्वेरी का उपयोग करने के लिए मजबूर:

use DB; (फ़ाइल परिभाषा के शीर्ष)

DB::table('packages')->whereRaw('json_contains(destinations, \'["Goa"]\')')->get();

और अगर आपके पास एक मॉडल है:

Package::whereRaw('json_contains(destinations, \'["' . $keyword . '"]\')')->get();

एसक्यूएल में काम से ऊपर आपकी क्वेरी मानते हुए।

+0

मैं 'गोवा' को इस '$ कीवर्ड =' goa ' –

+0

जैसे चर के साथ कैसे बदलूं, बस मुझे लगता है कि स्ट्रिंग concatenation का उपयोग करें? – Jonathan

+0

एसक्यूएल सिंटैक्स में एक त्रुटि मिली 'सिंटेक्स त्रुटि या उल्लंघन उल्लंघन: 1064 आपको अपने SQL वाक्यविन्यास में कोई त्रुटि है; मैन्युअल रूप से लाइन के लिए उपयोग करने के लिए सही वाक्यविन्यास के लिए आपके MySQL सर्वर संस्करण से मेल खाता है (एसक्यूएल: 'finde_packages' से चुनें * जहां json_contains (गंतव्यों, '[" गोवा "]') ' –

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