[英]Using functions in Laravel macros
我想扩展 Eloquent Builder 以支持搜索 function。 在我的服务提供商内部,我添加了以下内容:
Builder::macro('search', function (string $searchBy) {
...
}
哪个有效。 我现在可以在我的 model 上调用搜索方法。
我遇到的问题是其中的逻辑变得相当复杂,我不希望它是一个大脚本,但是由于 scope 内部macro
回调实际上来自 Eloquent,因此拆分为函数不起作用生成器。
所以这不起作用:
public function foo()
{
dd('bar');
}
public function boot()
{
Builder::macro('search', function (string $searchBy) {
$this->bla();
...
}
}
有没有一种方法可以使用功能而无需扩展完整的 Eloquent Builder?
我最终创建了一个包含我需要的完整逻辑的 class。 我认为这是一个相当不错的 OOP 实践。
Builder::macro('search', function (array $input) {
$jsonQuery = new JsonQuery($this, $input);
$jsonQuery->search();
return $this;
});
对于任何对细节感兴趣的人,您可以查看我的 JSON 搜索 package 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.