2013-11-27 13 views
7

वहाँ एक प्रश्न मैं mysql में चलाने के लिए उपयोग करते हैं:Laravel 4, वाक्पटु बयान और ऑपरेटरों के बीच

select * from my_table where $val between col1 and coL2; 

यह ठीक काम करता है, लेकिन laravel 4 के साथ, तो वह पूछताछ करने के लिए एक ही रास्ता कुछ है करने के लिए है "का चयन करें * ..."

किसी भी विचार

my_model::where('col1','>=',$val)->where('col2','<=',$val) 

इस तरह की तरह जब सामान्य का उपयोग कर काम करने के लिए है, क्योंकि मैं एक ही परिणाम की जरूरत नहीं है प्रतीत नहीं होता?

बस मेरे अनुरोध को स्पष्ट करने का: मेरे मामले में मुझे नहीं है "... जहां value1 और value2 के बीच कॉलम" लेकिन "commun के बीच मूल्य जहां" तो मुझे लगता है कि मैं का उपयोग नहीं कर सकते हैं "wherebetween"

+0

देखो: http://forums.laravel.io/viewtopic.php?pid=46789#p46789 –

उत्तर

9

यह यह करना चाहिए ...

$results = my_model::select('*')->whereRaw("$val between col1 and coL2")->get();

मुझे लगता है कि यह बहुत सुरक्षित है, लेकिन आप $val पहले साफ करने के लिए आवश्यकता हो सकती है।

+0

क्या लार्वेल आपके लिए यह साफ करता है? – Rafael

+2

@ राफेल, @ user1669496, लार्वेल चर के लिए कुछ भी नहीं करता है। आपको इस तरह कॉल करने की आवश्यकता है: '$ results = my_model :: select ('*') -> जहां रौ ("? Col1 और coL2 के बीच ", ['someValue']) -> एक सुरक्षित क्वेरी के लिए प्राप्त करें। – DuckPuncher

32

आप इस

// Get records whose id between 3 and 6 
$users = User::whereBetween('id', array(3, 6))->get(); 

या इसका उपयोग करते चर

$id = 'id'; 
$from = 1; 
$to = 5; 
$users = User::whereBetween($id, array($from, $to))->get(); 

की तरह कुछ इस सभी रिकॉर्ड मिल जाएगा कोशिश कर सकते हैं जिसका ID1 और 5 के बीच।

+0

जवाब देने के लिए धन्यवाद। मेरे मामले में problème यह है कि मेरी क्वेरी में इनपुट डेटा कॉलम के बीच होना चाहिए। –

+0

मुझे यह नहीं मिला, क्या आप कृपया अधिक वर्णनात्मक हो सकते हैं? –

+3

@ WereWolf-TheAlpha आप "बीच" मानों (3,6) 'के बीच "कोडिंग" हार्ड कोडिंग कर रहे हैं, लेकिन उसे तालिका में 2 कॉलम के बीच चयन करने की आवश्यकता है -' चयन करें * तालिका से जहां वांछित $ col1 और col2 के बीच ' – Prefix

0

MySQL मॉडल बनाने के बिना, हम जैसी क्वेरी उत्पन्न कर सकते हैं:

// If column value need to checked between value 1 and value 2 
$DBConnection->table('users')->whereBetween('id', array(3, 6))->get(); 

// If value need to checked between column 1 and column 2 value 
$DBConnection->->table('users')->whereRaw("$val between col1 and col2")->get(); 
0

आपका वाक्पटु उदाहरण() क्योंकि आप उलट तुलना ऑपरेटर्स काम नहीं किया है, जहां का उपयोग कर। आप पंक्तियों जहां वैल col1 और col2 के बीच है पुनः प्राप्त करना चाहते हैं, तो यह इस तरह होना चाहिए:

my_model::where('col1','<=',$val)->where('col2','>=',$val) 

सूचना तुलना ऑपरेटरों उलट कर रहे हैं कहते हैं "जहां वैल से अधिक या col1 के बराबर है और वैल से भी कम है या col2 के बराबर। "

आप एक छोटे से यह देखने के लिए मुश्किल भेंगापन करना पड़ सकता है। :) Laravel मंचों पर इस पोस्ट पर

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