2017-07-06 66 views
1

在查詢中的函數的變量我有這樣的事情:需要在Laravel

$configurations = Configs:all(); 

foreach($configs as $config){ 

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

... 
} 

因爲$config沒有查詢功能定義這不起作用。

如何將$config->id對象放在那裏?

回答

2

的封閉封裝其範圍擴大變量的範圍,這意味着它具有在其中它被定義或執行的範圍沒有訪問。它是,但是,可以繼承父範圍(如封閉的定義)的變量與使用關鍵字關閉:

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

} 
1

可以與use()

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

    ... 
    } 
1

,你也可以這樣寫,沒有必要寫foreach循環:

$configurations = Configs:all(); 
$documents = Document::whereHas('user', function($q) use($configurations) { 
    $q->whereIn('portal_id', $configurations->pluck('id'));  
}); 
+0

爲什麼你不在閉包裏面定義'$ configurations'?只是好奇 –