Quando você usa uma função de retorno de chamada em PHP, a função tem seu próprio escopo e não pode acessar variáveis de fora de seu escopo.
$foo = true;
DB::collection('something')->raw(function ($collection) {
echo $foo;// $foo is undefined here, this create an error
});
echo $foo;// here it work
Mas você pode alimentar seu retorno de chamada com variáveis usando o PHP
use
palavra-chave
:$foo = true;
DB::collection('something')->raw(function ($collection) use ($foo) {
echo $foo;// now it works
});