मेरे पास ऐसा कुछ है:
$configurations = Configs:all();
foreach($configs as $config){
$documents = document::whereHas('user', function ($q) {
$q->where("portal_id", $config->id),})->get()
...
}
यह काम नहीं करता क्योंकि $config
क्वेरी फ़ंक्शन में परिभाषित नहीं है।
मैं वहां $config->id
ऑब्जेक्ट कैसे रखूं?
3 जवाब
एक क्लोजर इसके दायरे को समाहित करता है, जिसका अर्थ है कि इसकी उस दायरे तक कोई पहुंच नहीं है जिसमें इसे परिभाषित या निष्पादित किया गया है। हालांकि, उपयोग कीवर्ड के साथ मूल दायरे (जहां क्लोजर परिभाषित किया गया है) से वैरिएबल को इनहेरिट करना संभव है:
$documents = document::whereHas('user', function ($q) use ($config) {
$q->where("portal_id", $config->id),})->get()
}
आप चर के दायरे को use()
के साथ बढ़ा सकते हैं
$documents = document::whereHas('user', function ($q) use($config->id) {
$q->where("portal_id", $config->id),})->get()
...
}
आप भी इस तरह लिख सकते हैं, फ़ोरैच लूप लिखने की कोई आवश्यकता नहीं है:
$configurations = Configs:all();
$documents = Document::whereHas('user', function($q) use($configurations) {
$q->whereIn('portal_id', $configurations->pluck('id'));
});
संबंधित सवाल
नए सवाल
laravel
लारवेल एक स्वतंत्र, ओपन-सोर्स PHP वेब फ्रेमवर्क है, जो टेलर ओटवेल द्वारा निर्मित और मॉडल-व्यू-कंट्रोलर (एमवीसी) आर्किटेक्चरल पैटर्न और सिम्फनी पर आधारित वेब अनुप्रयोगों के विकास के लिए अभिप्रेत है। लारवेल का स्रोत कोड GitHub पर होस्ट किया गया है और MIT लाइसेंस की शर्तों के तहत लाइसेंस प्राप्त किया गया है।