【发布时间】:2020-06-19 09:04:01
【问题描述】:
我想扩展 Eloquent Builder 以支持搜索功能。在我的服务提供商中,我添加了以下内容:
Builder::macro('search', function (string $searchBy) {
...
}
有效。我现在可以在我的模型上调用搜索方法。
我遇到的问题是其中的逻辑变得相当复杂,我不希望它是一个大型脚本,但是由于macro 内的范围,因此拆分为函数不起作用回调实际上来自 Eloquent Builder。
所以这不起作用:
public function foo()
{
dd('bar');
}
public function boot()
{
Builder::macro('search', function (string $searchBy) {
$this->bla();
...
}
}
有没有一种方法可以使用函数而无需费心扩展完整的 Eloquent Builder?
【问题讨论】:
-
我不 :) 我想使用宏
-
匿名函数是如何工作的,你的例子应该可以工作吗?它共享定义的范围?
-
我不太明白你在说什么,你能改一下吗?
标签: php laravel eloquent laravel-7 laravel-7.x