我想擴(kuò)展 Eloquent Builder 以支持搜索功能。在我的服務(wù)提供商內(nèi)部,我添加了以下內(nèi)容:Builder::macro('search', function (string $searchBy) { ...}哪個(gè)有效。我現(xiàn)在可以在我的模型上調(diào)用搜索方法。我遇到的問題是其中的邏輯變得相當(dāng)復(fù)雜,我不希望它成為一個(gè)大腳本,但是拆分為函數(shù)不起作用,因?yàn)榛卣{(diào)內(nèi)部的作用域?qū)嶋H上來自 Eloquent macroBuilder .所以這不起作用:public function foo(){ dd('bar');}public function boot(){ Builder::macro('search', function (string $searchBy) { $this->bla(); ... }}有沒有一種方法可以在不經(jīng)歷擴(kuò)展完整 Eloquent Builder 的麻煩的情況下使用函數(shù)?
1 回答

冉冉說
TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
我最終創(chuàng)建了一個(gè)包含我需要的完整邏輯的類。我認(rèn)為這是一個(gè)相當(dāng)好的 OOP 實(shí)踐。
Builder::macro('search', function (array $input) {
? ? $jsonQuery = new JsonQuery($this, $input);
? ? $jsonQuery->search();
? ? return $this;
});
- 1 回答
- 0 關(guān)注
- 90 瀏覽
添加回答
舉報(bào)
0/150
提交
取消