簡體   English   中英

在 Laravel 宏中使用函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM