2016-01-22 13 views
8

में दो स्तंभों के बीच नीचे Laravel प्रलेखन से एक अंश है:एसक्यूएल Laravel/लुमेन

whereBetween विधि पुष्टि करता है कि एक स्तंभ के मूल्य दो मानों के बीच है:

$users = DB::table('users')->whereBetween('votes', [1, 100])->get();

लेकिन अगर मैं यह जानना चाहता हूं कि मेरे डेटाबेस में दो कॉलम के बीच कोई मान है या नहीं?

यह मेरा कच्चे एसक्यूएल है:

SELECT a.*, b.name FROM restaurants a, restaurant_class b 
WHERE a.restaurant_class_id = b.id 
AND '$d' = CURRENT_DATE 
AND '$t' BETWEEN a.saturday_ot AND a.saturday_ct 
ORDER BY id DESC 

saturday_ot और saturday_ct मेरी तालिका में TIME स्तंभ हैं और $t एक समय चर रहा है। तो मैं यह जांचना चाहता हूं कि समय दोनों कॉलम में समय के बीच है या नहीं।

+1

मुझे लगता है कि आप whereRaw विधि का उपयोग करने के लिए है –

उत्तर

17

whereBetween विधि का कोई विकल्प नहीं है जो दो कॉलम पर लागू होता है। आप फिर भी दो तरीकों में से एक में यह कर सकते हैं:

1. बाइंडिंग, जहां कच्चे हालत का उपयोग के साथ उपयोग whereRaw और चर के लिए एक बाध्यकारी:

whereRaw('? between saturday_ot and saturday_ct', [$t]) 

2. उपयोग एक where दो कि $t चर मूल्य के लिए सीमाओं के रूप में दो स्तंभ मान का उपयोग शर्तों के साथ:

where(function ($query) use ($t) { 
    $query->where('saturday_ot', '<=', $t); 
    $query->where('saturday_ct', '>=', $t); 
})