在 Laravel 宏中使用函数

我想扩展 Eloquent Builder 以支持搜索功能。在我的服务提供商内部,我添加了以下内容:


Builder::macro('search', function (string $searchBy) {

    ...

}

哪个有效。我现在可以在我的模型上调用搜索方法。


我遇到的问题是其中的逻辑变得相当复杂,我不希望它成为一个大脚本,但是拆分为函数不起作用,因为回调内部的作用域实际上来自 Eloquent macroBuilder .


所以这不起作用:


public function foo()

{

    dd('bar');

}


public function boot()

{

    Builder::macro('search', function (string $searchBy) {

        $this->bla();

        ...

    }

}

有没有一种方法可以在不经历扩展完整 Eloquent Builder 的麻烦的情况下使用函数?


Helenr
浏览 114回答 1
1回答

冉冉说

我最终创建了一个包含我需要的完整逻辑的类。我认为这是一个相当好的 OOP 实践。Builder::macro('search', function (array $input) {    $jsonQuery = new JsonQuery($this, $input);    $jsonQuery->search();    return $this;});
打开App,查看更多内容
随时随地看视频慕课网APP