为了账号安全,请及时绑定邮箱和手机立即绑定

在 Laravel 宏中使用函数

在 Laravel 宏中使用函数

PHP
Helenr 2023-06-18 17:55:16
我想扩展 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 的麻烦的情况下使用函数?
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

我最终创建了一个包含我需要的完整逻辑的类。我认为这是一个相当好的 OOP 实践。


Builder::macro('search', function (array $input) {

    $jsonQuery = new JsonQuery($this, $input);

    $jsonQuery->search();


    return $this;

});

查看完整回答
反对 回复 2023-06-18
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信