2014-09-28 18 views
8

में दिनांक मुझे लगता है किwhereBetween laravel 4 वाक्पटु

SELECT * FROM `sp_price` WHERE (`from_date` between '2014-08-15' and '2014-09-18') || (`to_date` between '2014-08-15' and '2014-09-18') 

की तरह एक प्रश्न अब मैं कैसे laravel 4 में इस जिज्ञासा को बदलने सकते हैं। मैं का उपयोग Eloquent

+0

क्या आपको लगता है कि काम नहीं किया कोशिश की थी? – mbouzahir

+0

@mbouzahir मैं अपना प्रश्न अपडेट करता हूं। कृपया अद्यतन प्रश्न –

उत्तर

0

आप whereRaw() उपयोग कर सकते हैं, उदाहरण के लिए, जहां प्रश्न के खंड एक कच्चे जोड़ने के लिए,:

$results = SpPrice::whereRaw("('2014-08-15' between `from_date` and `to_date`) || ('2014-09-18' between `from_date` and `to_date`)")->get(); 

या शायद आप whereBetween() के पहले तर्क के रूप में उपयोग कर सकते हैं DB::raw(), लेकिन मैं अगर यकीन नहीं है यह संभव है, उस मामले में आप एक बंद के साथ orWhere() उपयोग कर सकते हैं, उदाहरण के लिए, एक और अधिक पठनीय कोड लिखने के लिए:

SpPrice::whereBetween(DB::raw('"2014-08-15"'), ['from-date', 'to_date'])->orWhere(function($q) 
{ 
    $q->whereBetween(DB::raw('"2014-09-18"'), ['from-date', 'to_date']); 
}); 

लेकिन मुझे यकीन नहीं है कि यह काम करता है, इसे आज़माएं।

12
DB::table(sp_price) 
    ->whereBetween('from_date',array('2014-08-15','2014-08-18')) 
    ->orWhereBetween('to_date',array('2014-08-15','2014-08-15')) 
    ->get(); 

हो सकता है आप इस

+0

मैं कैलेंडर_शैड्यूल से सीएस के रूप में इस चयन का चयन कैसे कर सकता हूं, जहां cs.from_booking_date और cs.to_booking_date के बीच 1446377416; ' – 89n3ur0n

+0

यहां कार्य करता है:' $ शेड्यूल = डीबी :: तालिका ('calendar_schedules') -> whereRaw ('(' से_booking_date' और 'to_booking_date' के बीच) या (? से_booking_date' और' to_booking_date') ', [$ request-> इनपुट (' startDate '), $ request-> इनपुट (' एंडडेट ')] -> पहले(); ' – 89n3ur0n

1

अपने उदाहरण में कोशिश कर सकते हैं, तो आप दोनों from_date और to_date दिनांकों की एक ही श्रेणी के लिए जाँच कर रहे हैं ... अगर यह मामला हमेशा हो जाएगा, तो आप इस क्वेरी कर सकते हैं थोड़ा और "वाक्पटु":

SpPrice.php मॉडल में:

public function getPriceByDate($fromDate, $toDate) 
{ 
    $range = [$fromDate, $toDate]; 
    return $this 
     ->whereBetween('from_date', $range) 
     ->orwhereBetween('to_date', $range) 
     ->get(); 
} 

फिर, एक नियंत्रक से इस विधि कॉल करने के:

$prices = new SpPrice; 
    $price = $prices->getPriceByDate('2014-08-15', '2014-09-18'); 
1
$count = TokenLog::whereBetween(DB::raw('date(created_at)'), [$start_date, $end_date])->get(); 
संबंधित मुद्दे