कहें कि मेरे पास एक मॉडल Box
है जिसमें कई विजेट हैं। विजेट सक्रिय या निष्क्रिय (बूलियन) हो सकते हैं।क्वेरी स्कोप का उपयोग कर उत्सुक लोडिंग संबंधित मॉडल
मॉडल/box.php:
class Box extends Eloquent
{
public function widgets()
{
return $this->hasMany('Widget');
}
}
मॉडल/widget.php:
class Widget extends Eloquent {
public function box()
{
return $this->belongsTo('Box');
}
public function scopeActive($query)
{
return $query->whereActive(true);
}
}
क्वेरी स्कोप यह आसान सभी प्राप्त करने के लिए बनाने के Widget
मॉडल एक प्रश्न गुंजाइश परिणाम फ़िल्टर कर सकते जो है
$box_widgets = Box::find($box_id)->widgets()->active()->get();
// returns an Eloquent\Collection containing a filtered array of widgets
लेकिन यह कैसे मैं करने के लिए scopeActive
उपयोग कर सकते हैं: किसी दिए गए बॉक्स के लिए विगेट्स इस उत्सुक लोडिंग को with
विधि के सशर्त कार्य को खत्म करें?
$boxes = Box::with(array('widgets', function ($q)
{
$q->active();
}))->get();
ऐसा लगता है वहाँ शायद Box::with('widgets->active')
या Box::with('widgets.active')
की तरह एक संबंध की गुंजाइश है, कुछ तक पहुँचने के लिए एक आशुलिपि है, लेकिन मैं इसे खोजने के लिए नहीं कर पाए हैं की तरह।
सुंदर ज्यादा मैं वास्तव में क्या देख रहा था, धन्यवाद! बस स्पष्ट करने के लिए, ये बॉक्स मॉडल के तरीके हैं। यह विभिन्न नामों के साथ सेट भी प्रदान करता है, जो कि बहुत अच्छा है। – joemaller
हां, बेशक वे बॉक्स मॉडल से संबंधित हैं। आपके जैसे संबंधों के लिए विभिन्न नामों को छिपाना वास्तव में बहुत अच्छा है क्योंकि आप कोड वर्बोज़ और उपयोग में आसान बना सकते हैं –