第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 在 eloquent 查詢?nèi)罩局凶饔糜跓o限循環(huán)

Laravel 在 eloquent 查詢?nèi)罩局凶饔糜跓o限循環(huán)

PHP
慕絲7291255 2023-08-11 16:29:52
我制作了一個范圍,但不知何故最終陷入無限循環(huán)。在將其簡化為最小的可重現(xiàn)示例時,我得出了以下結(jié)論:public function apply(Builder $builder, Model $model){    Log::info('[Search] SQL: ' . $builder->toSql() . " Bindings: " . implode(', ', $builder->getBindings()));}范圍以標準方式在模型中實現(xiàn):protected static function booted(){    static::addGlobalScope(new AuthorizationScope());}如果我像這樣運行代碼,最終會出現(xiàn)以下錯誤:已達到最大函數(shù)嵌套級別“256”,正在中止!為什么無法在范圍本身內(nèi)獲取 SQL 轉(zhuǎn)儲?這可以以某種方式修改嗎?在其他地方啟用數(shù)據(jù)庫查詢?nèi)罩局惖倪x項實際上并不是這個問題的一部分。
查看完整描述

1 回答

?
拉莫斯之舞

TA貢獻1820條經(jīng)驗 獲得超10個贊

我回答說這確實是一個遞歸調(diào)用。

由于toSql()不是一種Eloquent\Builder方法,而是一種方法Query\Builder,因此它通過魔術(shù)方法轉(zhuǎn)發(fā),在這種情況下,需要在實際執(zhí)行范圍之前__call()獲取應(yīng)用范圍的查詢構(gòu)建器實例:

public?function?toBase(){
????return?$this->applyScopes()->getQuery();
}

再往下, applyscopes 調(diào)用apply()返回到我的代碼的方法,該方法再次一遍又一遍地觸發(fā)相同的事情:

if?($scope?instanceof?Scope)?{
????$scope->apply($builder,?$this->getModel());
}

所以回答我自己的問題,由于以下原因不可能做我想做的事。


查看完整回答
反對 回復(fù) 2023-08-11
  • 1 回答
  • 0 關(guān)注
  • 118 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號