मैं Laravel 4. मुझे पता था कि के रूप में पर काम कर रहा हूँ, मैं सबक्वेरी कर सकते हैं:Laravel का डाटाबेस अनुकूलित करने के लिए कैसे क्वेरी बिल्डर (बेहतर सबक्वेरी बनाने)
Project::whereIn('project_id', function($q) {
$q->select('project_id')
->from('company')
->whereNull('deleted_at');
});
मैं जटिलताओं पाया, कि मैं यह कर सकते हैं ' subquery में स्कोप का उपयोग करें और soft_delete अक्षम करें मुझे स्रोत कोड को इतना बदल दें।
काश यह था:
Project::whereIn('project_id', function(&$q) {
$q = Company::select('project_id')->getQuery();
});
अब, मैं, गुंजाइश जोड़ सकते हैं आसानी से soft_delete अक्षम करें।
मैंने कोशिश की, और पाया एक समाधान है कि मैं Laravel का डाटाबेस \ क्वेरी \ बिल्डर कोड, समारोह whereInSub, लाइन 786.
call_user_func($callback, $query = $this->newQuery());
में परिवर्तित करना होगा:
$query = $this->newQuery();
call_user_func_array($callback, array(&$query));
यह संशोधित करने के लिए हानिकारक है लैरवेल ढांचे के विक्रेता। तो मैं पूछना चाहता हूं कि इसे सुरक्षित तरीके से कैसे किया जाए।
क्षमा करें क्योंकि मेरी खराब अंग्रेजी।
पढ़ने के लिए धन्यवाद।
मैंने अपना प्रश्न संपादित किया क्योंकि मुझे समाधान मिला। संरक्षित फ़ंक्शन को ओवरराइड करने की आवश्यकता है नया क्लास MyModel –
में "उपयोग" सूचियों को शामिल करने की आवश्यकता नहीं है जब तक आप वास्तव में ... अपने उप-वर्ग में उनका उपयोग नहीं कर रहे हैं। इस मामले में आपको केवल अपने MyQueryBuilder की आवश्यकता है, जिसका उपयोग नए BaseQueryBuilder() के ओवरराइड संस्करण में @ LêTrầnTiếnTrung के रूप में सटीक रूप से इंगित किया जाएगा। – LePhleg