मेरे पास ऐसा कुछ है:

$configurations = Configs:all();

foreach($configs as $config){

$documents = document::whereHas('user', function ($q) {
$q->where("portal_id", $config->id),})->get()

...
}

यह काम नहीं करता क्योंकि $config क्वेरी फ़ंक्शन में परिभाषित नहीं है।

मैं वहां $config->id ऑब्जेक्ट कैसे रखूं?

1
prgrm 6 जुलाई 2017, 16:01

3 जवाब

सबसे बढ़िया उत्तर

एक क्लोजर इसके दायरे को समाहित करता है, जिसका अर्थ है कि इसकी उस दायरे तक कोई पहुंच नहीं है जिसमें इसे परिभाषित या निष्पादित किया गया है। हालांकि, उपयोग कीवर्ड के साथ मूल दायरे (जहां क्लोजर परिभाषित किया गया है) से वैरिएबल को इनहेरिट करना संभव है:

$documents = document::whereHas('user', function ($q) use ($config) {
$q->where("portal_id", $config->id),})->get()

}
2
Nishan Karunarathna 6 जुलाई 2017, 16:15

आप चर के दायरे को use() के साथ बढ़ा सकते हैं

 $documents = document::whereHas('user', function ($q) use($config->id) {
    $q->where("portal_id", $config->id),})->get()

    ...
    }
1
Sanzeeb Aryal 6 जुलाई 2017, 16:09

आप भी इस तरह लिख सकते हैं, फ़ोरैच लूप लिखने की कोई आवश्यकता नहीं है:

$configurations = Configs:all();
$documents = Document::whereHas('user', function($q) use($configurations) {
    $q->whereIn('portal_id', $configurations->pluck('id'));       
});
1
Malde Chavda 6 जुलाई 2017, 16:20