2014-09-01 14 views
5

मैं लार्वेल में बहुत नया हूं, वर्तमान में लैरवेल 4 के साथ काम कर रहा हूं। मैं अपनी परियोजना में एक से अधिक कॉलम खोज कार्यक्षमता जोड़ने की कोशिश कर रहा हूं। मैं एकल कॉलम की खोज क्वेरी कर सकता हूं, लेकिन ईमानदारी से मुझे नहीं पता कैसे laravel.I में एक से अधिक स्तंभ वाक्पटु खोज प्रश्न करने के लिए मेनूलैरवेल एकाधिक कॉलम eloquent खोज क्वेरी

1.Locatiom 2.blood समूह नीचे दो बूंद की है।

मैं एक उपयोगकर्ता कुछ स्थान .कि है के खिलाफ कुछ रक्त समूह होने खोज करना चाहते हैं, तो उपयोगकर्ता एक स्थान और उन दो से रक्त समूह चयन एक समय में ड्रॉप डाउन मेनू और मारा जाएगा खोज बटन

मेरी डेटाबेस में, मैं दो स्तंभ हैं, एक स्थान होता है और एक और एक निश्चित उपयोगकर्ता के रक्त समूह शामिल हैं। अब, ऐसी खोज के लिए बोलने वाली क्वेरी क्या होनी चाहिए?

उत्तर

24

आप प्रत्येक क्षेत्र के लिए where श्रृंखला आप के माध्यम से खोज करने के लिए की जरूरत है:

// AND 
$results = SomeModel::where('location', $location)->where('blood_group', $bloodGroup)->get(); 

// OR 
$results = SomeModel::where('location', $location)->orWhere('blood_group', $bloodGroup)->get(); 

आप यह आसान स्कोप के लिए धन्यवाद के साथ काम करने के लिए कर सकते हैं:

// SomeModel class 
public function scopeSearchLocation($query, $location) 
{ 
    if ($location) $query->where('location', $location); 
} 

public function scopeSearchBloodGroup($query, $bloodGroup) 
{ 
    if ($bloodGroup) $query->where('blood_group', $bloodGroup); 
} 

// then 
SomeModel::searchBloodGroup($bloodGroup)->searchLocation($location)->get(); 

बस एक समझदार उदाहरण के लिए, इसे समायोजित आपकी जरूरतों के लिए।

+0

बहुत धन्यवाद, यह उत्तर बहुत उपयोगी लगता है .. – RTan

0

यह एक बढ़िया तरीका है, लेकिन मैं बात उसमें कोई त्रुटि है कहीं के रूप में laravel आप बस इस्तेमाल कर सकते हैं SomeModel::BloodGroup($bloodGroup)->Location($location)->get();

searchBloodGroup की नहीं ले यदि आप एक गैर स्थिर समारोह SomeModel::searchBloodGroup($bloodGroup)->searchLocation($location)->get(); का उपयोग करने का तो बजाय का उपयोग करने की अनुमति नहीं होगी है ब्लू ग्रुप में बदल दिया गया है, यह है कि आप इसे अन्य सभी के लिए कैसे उपयोग करेंगे

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