2015-12-02 11 views
8

अपने प्रोजेक्ट में मैं कई सुवक्ता मॉडल इस तरह कक्षा में विन्यस्त उत्सुक संबंध है:अक्षम उत्सुक संबंधों

protected $with = [ 'countries', 'roles' ]; 

लेकिन कभी कभी मैं किसी भी संबंध के बिना सिर्फ पुराने सादे मॉडल की जरूरत है। क्या मैं किसी भी तरह से कर सकता हूं:

Model::noRelations()->all() 

वास्तव में क्वेरी बिल्डर का उपयोग नहीं करना चाहते हैं और न ही कुछ अवसरों के लिए एक और कक्षा बना सकते हैं। आप इसे खाली, तो आप मैन्युअल रिश्तों उत्सुक होने की जरूरत है कि ओवरराइड कर सकते हैं छोड़ने के बजाय अपने मॉडल पर $with गुण सेट करने के लिए है, तो

उत्तर

17

इस तरह भरी हुई:

Model::setEagerLoads([])->get(); 

Link to API for setEagerLoads

+0

वर्क्स एक आकर्षण की तरह ! वास्तव में मुझे क्या चाहिए। –

+0

यदि मैं इस मॉडल को अन्य मॉडल के संबंध में संदर्भित किया जा रहा हूं जैसे मॉडल मॉडल दो ('modelOne') -> get(); मॉडल के लिए उत्सुक लोडिंग से बचने के लिए कैसे? – BlackBurn027

6

थॉमस किम जवाब के अलावा।

यदि आप वैसे भी eloquent \ Model class का विस्तार करते हैं और अक्सर मॉडल से संबंधों को तोड़ने की आवश्यकता होती है, तो यह समाधान आपको अच्छी तरह से अनुकूल कर सकता है।

  1. अपने डिफ़ॉल्ट मॉडल कक्षा में गुंजाइश बनाएँ:

    public function scopeNoEagerLoads($query){ 
        return $query->setEagerLoads([]); 
    } 
    
  2. किसी भी ORM के लिए, कि उस वर्ग आप में सक्षम हो जाएगा लागू होता है:

    User::noEagerLoads()->all() 
    
संबंधित मुद्दे