Я хотел бы расширить Eloquent Builder, чтобы он имел поддержку функции поиска. Внутри моего поставщика услуг я добавил следующее:
Builder::macro('search', function (string $searchBy) {
...
}
, который работает. Теперь я могу вызвать метод поиска на моей модели.
Проблема, с которой я столкнулся, заключается в том, что logi c внутри него становится довольно сложным, и я бы не хотел, чтобы он был одним большим скриптом, однако разделение на функции не работает, поскольку область видимости когда внутри обратный вызов macro
фактически исходит от Eloquent Builder.
Значит, это не работает:
public function foo()
{
dd('bar');
}
public function boot()
{
Builder::macro('search', function (string $searchBy) {
$this->bla();
...
}
}
Есть ли способ использовать функции без лишних хлопот, связанных с расширением полного Eloquent Builder?